获取百度搜索的返回结果

  1. 基于request获取百度返回结果:本文基于request进行访问有可能导致SSLError(这有可能是由于本文是访问https所导致的)。但这篇博客较完整地介绍了对html使用etree,json对返回结果进行解析的操作,可以借鉴。

  2. Python3网络爬虫(一):利用urllib进行简单的网页抓取:这篇主要使用urllib进行抓取,代码简单易懂非常方便。但缺少进一步的格式化处理,可以结合第1篇理解。

    一开始我们以requests.exceptions.SSLError: HTTPSConnectionPool这个错误进行检索,遇到了python使用requests时报错requests.exceptions.SSLError: HTTPSConnectionPool,遇到了解决python爬虫requests.exceptions.SSLError: HTTPSConnectionPool(host=‘XXX’, port=443)问题,走了一些弯路,他们的方法是否有用我也不得而知。

  3. 使用urllib返回的结果不全的解决。
    目前的代码,存在返回的结果很少的问题。

    from urllib import request
    wd = 'python'
    response = request.urlopen("http://www.baidu.com/s?wd="+wd)
    html = response.read()
    

    (1)首先分析返回html结果中<title>\xe7\x99\xbe\xe5\xba\xa6\xe5\xae\x89\xe5\x85\xa8\xe9\xaa\x8c\xe8\xaf\x81</title>,使用response.read().decode('utf-8')可得知其含义为<title>百度安全验证</title>。猜测:我们由于没有传入head而引起目标网站的怀疑,尝试传入head。将代码修改:

    from urllib import request
    wd = 'python'
    url = "http://www.baidu.com/s?wd="+wd
    headers = {'User-Agent': 'Mozilla/4.0 (compatible; MSIE 5.5; Windows NT)'}
    req = request.Request(url=url, headers=headers, method='GET')
    response = request.urlopen(req)
    html = response.read().decode('utf-8')
    print(html)
    

    执行之后发现html已经正常啦~

  4. 解析html遇到层级关系的“标题”-“摘要”-“链接”对应问题。在第1篇博客中,作者直接解析所有的h3标题和所有的abstract(而从浏览器的F12来看,他们的关系并非一一对应)

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值