当前位置:   article > 正文

python爬虫②-----urllib高级用法_req=urllib.request.request(start_url)

req=urllib.request.request(start_url)

对于大多数网站来说,如果网站发现你是爬虫程序,会禁止你的访问,从而让你获取不到你想要的数据。所以,我们要尽可能的伪装自己,像是真人从浏览器访问访问的一样。

 

通常防止爬虫被反主要有以下几个策略:

动态设置请求头headers(User-Agent)(随机切换User-Agent,模拟不同用户的浏览器信息)
使用IP地址池:VPN和代理IP,现在大部分网站都是根据IP来ban的
Cookies
设置延迟下载(防止访问过于频繁,设置为2秒或更高)
 

设置请求头(urllib.request.Request)

urllib.request.Request是urllib的一个抽象类,用于构造一个http请求对象实例。
request类Request方法常用的内置方法:

Request.add_data(data)设置data参数,如果一开始创建的时候没有给data参数,那么可以使用该方法追加data参数;
Request.get_method() 返回HTTP请求方法,一般返回GET或是POST;
Request.has_data() 查看是否设置了data参数;
Request.get_data() 获取data参数的数据;
Request.add_header(key, val) 添加头部信息,key为头域名,val为域值;
Request.get_full_url() 获取请求的完整url;
Request.get_host() 返回请求url的host(主域名);
Request.set_proxy(host, type) 设置代理,第一个参数是代理ip和端口,第二个参数是代理类型(http/https)。
 

简单代码示例
 

  1. # 导入urllib库
  2. import urllib.parse
  3. import urllib.request
  4. # 声明定义请求头
  5. headers = {
  6. # 在这个头字典里面可以将你所有需要传递的头添加进来
  7. 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.110 Safari/537.36'
  8. }
  9. # 向指定的url发送请求,并返回
  10. post_url = 'https://fanyi.baidu.com/sug'
  11. # 传入参数
  12. form_data = {
  13. 'kw': 'honey'
  14. }
  15. # 格式化参数
  16. form_data = urllib.parse.urlencode(form_data).encode()
  17. # 创建Request类
  18. req = urllib.request.Request(url=post_url, headers=headers, data=form_data)
  19. # 进行请求,打印结果
  20. ret = urllib.request.urlopen(req)
  21. print(ret.read())

 

爬虫示例

爬取拉勾网Python职位招聘信息(由于拉勾网进行了防爬,访问其接口需要传递Cookie,本人直接在浏览器复制出来写入到请求头中的)。

  1. # 引入urllib库
  2. import urllib.parse
  3. import urllib.request
  4. # 声明定义请求头
  5. h
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/花生_TL007/article/detail/390904
推荐阅读
相关标签
  

闽ICP备14008679号