Web Crawler

静态网页

  • 通过Requests.get()获取网页的HTML信息

  • 通过beautifulsoup4解析HTML信息,find_all匹配的返回的结果是一个列表。提取匹配结果后,使用text属性,提取文本内容,滤除br标签。随后使用replace方法,剔除空格,替换为回车进行分段。 在html中是用来表示空格的。replace('\xa0'*8,'\n\n')就是去掉下图的八个空格符号,并用回车代替

  • 一般静态页面的正文部分的标签是“showtxt”

动态网页

  • 通过fiddler抓取网页的json包信息,然后解析json数据,分析数据中包含图片的节点,分析图片下载服务器的地址,最后整合数据得到每张图片的下载地址。

    html = json.loads(req.text)
    for each in html['preview_photos']:
        print('图片ID:', each['id'])
  • 验证Request Headers,通过Fiddler的抓包信息,可以看到Requests Headers里又很多参数。

    • User-Agent:这里面存放浏览器的信息

    • Referer:这个参数也可以用于反爬虫,它表示这个请求是从哪发出的。

    • authorization:在我们用浏览器访问的时候,服务器会为访问者分配这个用户ID。如果后台设计者,验证这个参数,对于没有用户ID的请求一律禁止访问,这样就又起到了反爬虫的作用。

      if __name__ == '__main__':
          target = 'http://unsplash.com/napi/feeds/home'
          headers = {'authorization':'your Client-ID'}
          req = requests.get(url=target, headers=headers, verify=False)
          print(req.text)

视频

手机APP

Last updated

Was this helpful?