首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

python玩转爬虫第一弹

python玩转爬虫第一弹

爬虫相关操作步骤

一、确定需要爬取网页信息的url(统一资源定位符),爬取网页时需要根据url作为地址索引,得到所需采集的信息。

二、在浏览器中打开所需爬取的网页,找到所需要采集信息的位置,并通过查看网页源代码的方式找到采集信息在网页代码中的层次,根据此为依据获取信息。

三、使用Python抓取网页信息的基本思路如一二所示,当然,完整的爬虫程序还应当涉及网页源码的缓存、采集信息的储存等一系列操作,这些操作会在后面的文档中给出步骤。

Python用于爬虫的库有很多,同时还有Scrapy框架也是用于爬虫程序的编写的,在下面的介绍中我会先对一些库进行介绍,在介绍完库及其相关函数后,再对scrapy框架进行更深入的介绍。

接下来介绍几个常用的用于Python爬虫程序编写的库和包以及库中一些相关函数的用法和含义。

第一步,先介绍如何使用urllib, urllib2, re, bs4, lxml等库进行静态网页的源代码提取和解析操作。

1 import urllib #导入urllib库

2 import urllib2 #导入urllib2库

注意:使用python导入相关库之前,必须保证在Python的安装目录site-packges中已经安装了相应的库,可以通过上面的语句来进行测试,运行语句,看是否报错。

在这里,推荐安装Anaconda集成包,因为在这个Python的编译环境下,已经为我们提前安装好了很多常用的库,这样就免去了在网上寻找库资源和安装库的步骤。当然,如果在Anaconda中也不存在的库,还是得需要按照“pip install文件名”的格式进行安装。

4 print response.read() #使用read方法将得到的源代码打印出来

注:在这里,我们先对urlopen函数进行一个简单的介绍。

函数格式:urlopen(url, data, timeout)

其中,第一个参数url即为URL(统一资源定位符,通常可以理解为我们常说的网址),第二个参数data是访问URL时要传送的数据,第三个参数timeout是设置的超时时间。从我们上面给出的代码可以看到,第二和第三个参数都是可以不传送的,那么此时data默认为None,timeout则默认为socket._GLOBAL_DEFAULT_TIMEOUT,但第一个参数url是必须传送的。

上面给出的代码是最简单的提取网页源代码的方式。

接下来,我们尝试构建Request,通过构建一个Request类的实例,在该实例中我们给定需要传入的url, data等内容,然后将这个request请求传入到urlopen函数中。

1 import urllib

2 import urllib2

4 response = urllib2.urlopen(request)#现在的urlopen函数传入上一步构建的request实例

5 print response.read()

接着,考虑第二个参数data的设置和传输。很多网页都是需要提供数据输入的,比如说最常见的登录注册时,就需要用户提供用户名和密码,才能进入相应的网页中。

数据传送的两种方式:POST和GET数据传送。

POST数据传送方式:

1 import urllib

2 import urllib2

3 values = {“username”: “xxxx”, “password”:“xxx”} #字典数据格式,用来给data参数赋值

4 data = urllib2.urlencoed(values) #使用urlencode函数将上面的values以url编码

5 request = urllib2.Request(“http://www.weibo.com”, data) #构造含有url和data参数的request实例

6 response = urllib2.urlopen(request)

7 print response.read()

GET数据传送方式:#可以直接将参数写在网址上面,即将url和data参数进行整合,写在一起,然后传送到Request类中,用于构建一个带有url和data参数的request实例。

1 import urllib

2 import urllib2

3 values[‘username’] = “xxx”

4 values[‘password’] = “xxx”

5 data = urllib2.urlencode(values) #对values进行编码

6 url = “http://passport.csdn.net/account/login”

7 geturl = url + “?” + data #将url和data参数利用正则表达式整合在一起

8 request = urllib2.Request(geturl) #根据geturl来构建request实例

9 response = urllib2.urlopen(request)

10 print response.read()

上面的介绍部分已经可以实现简单的爬虫操作,但还远远不够,对于大部分网页而言,我们还需要进行进一步的深入探讨。

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20180719G01E7Z00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券