打赏

Python爬虫流程

Python爬虫流程

主要分为三个部分 (1)获取网页-------->(2)解析网页(获取数据)--------->存储数据

三个流程的技术实现

1.获取网页
-获取网页的技术基础:urllib、requests、selenium
-获取网页的进阶技术:多线程抓取、登录抓取、突破ip限制和服务器抓取
2.解析网页
-解析网页的技术基础:re正则表达式、BeautifulSoup和xml
-解析网页的进阶技术:解决中文乱码问题
3.存储数据
-存储数据的基本技术:存入txt文件和存入csv文件
-存储数据的进阶技术:存储mysql、mongoDB数据库中

搭建Python爬虫的平台

  • Python的安装
  • 集成环境Anaconda的安装
  • 使用pip工具安装第三方库

urllib.request

urllib中,request这个模块主要负责构造和发起网络请求,并在其中加入Headers,Proxy等。

发起GET请求

主要使用urlopen()方法发起请求

from urllib import request
resp = request.urlopen('http://www.baidu.com') type(resp)
print(resp.read().decode()) 数据为二进制数据需转码

发起POST请求

urlopen()默认的访问方式为GET,当在urlopen()方法中传入data参数时,则会发起pose请求
注意:传入的data数据需要为bytes格式
设置timeout参数还可以设置超时时间,如果请求时间超出,那么会抛出异常
from urllib import request
resp = request.urlopen('http://httpbin.org', data=b'word=hello', timeout=10)
print(resp.read().decode())

添加Headers

通过urllib发起的请求会有默认的一个Headers:"User-Agent":Python-urllib/3.6",指明请求是由urllib发送的。
**所以遇到一些验证User-Agent的 网站时,我们需要自定义Headers,而这需要借助于urllib.request中的Request对象。
from urllib import request
url = 'http://httpbin.org/get'
headers = {'user-agent': 'Mozilla/5.0 xxxxxxxxxxxxxxxxxxxxxx'}

**需要使用url和headers生成一个Request对象,然后将其传入urlopen方法中
req = request.Request(url, headers=headers)
resp = request.urlopen(req)
print(resp.read().decode())

Request对象

如上所示,urlopen()方法中不止可以传入字符串格式的url,也可以传入一个Request对象来扩展功能。Request对象如下所示:
class urllib.request.Request(url, data=None, headers={}, origin_req_host=None, unverifiable=False, method=None)
构造Request对象必须传入url参数, data数据和headers都是可选的。
Request方法可以使用method参数来自由选择请求的方法,如PUT, DELETE等等,默认为GET方法。

添加Cookie

为了在请求时能带上Cookie信息,我们需要重新构造一个opener
使用request.build_opener方法进行构造opener,将我们想要传递的cookie配置到opener中,然后使用这个opener的open方法来发起请求。

User_Agent:

posted on 2018-12-05 16:58  XuCodeX  阅读(798)  评论(0编辑  收藏  举报

导航