使用python 写爬虫(1)

5 (100%) 1 vote

 

 

Python 写 Crawler 基础需求:
1.Python
2.Python urllib和urllib2库的用法
3.Python 正则表达式
4.Crawler框架Scrapy
Urllib2 库的基本用法
1.爬取网页
import urllib2 引用库
response = urllib2.urlopen(“http://www.baidu.com”) 爬取百度
print response.read()

2.分析
urllib2.urlopen(url,data,timeout) 中有3个参数
第一个参数url即你想要爬取的url
第二个第三个可以不传送,data默认为None,timeout默认为socket._GLOBAL_DEFAULT_TIMEOUT
传送完url后会返回一个response对象,返回信息储存在这里面。

3.构造Request
我们在写urlopen的是时候可以传入一个request,它其实就是一个Request类的实例,

import urllib2

request = urllib2.Request(“http://www.baidu.com”)
response = urllib2.urlopen(request)
print response.read()

与之前一样,只不过多了一个request对象,推荐这样写,因为在构建请求时可能对加入多个内容,这样写逻辑上更加清晰。

4.POST和GET数据传送
我们前面只是爬取了一个静态的页面,如果我们想要将用户名和密码传给URL,然后得到数据库之后的响应,这时我们就要用到POST和GET了。

POST方式:
上面我们说的data就是在这里要用到的,我们传送的数据就是data。

import urllib
import urllib2

values = {“username”:”418613225 @qq.com”,”password”:”XXXX”}
data = urllib.urlencode(values) 将value编码
url = “https://passport.csdn.net/account/login?from=http://my.csdn.net/my/mycsdn”
request = urllib2.Request(url,data)
response = urllib2.urlopen(request)
print response.read()

GET方式:
Get方式,是我们直接将我们的信息写到网址上,直接构成一个带参数的URL出来。

import urllib
import urllib2

values = {“username”:”418613225@qq.com”,”password”:”XXXXX”}
data = urllib.urlencode(values)
url=”http://passport.csdn.net/account/login”
geturl=url + “?” +data
request = urllib2.Request(geturl)
response = urllib2.urlopen(request)
print response.read()