Python爬取贴吧图片(含urllib库和requests库的两种爬取方式)

概述

======= 个人摸索向,只是一次小小的记录:) =======

        重新温习一下被放下太久的Python爬虫技能,这次试着爬一下ID:INVADED 异度侵入贴吧的图片。(今晚还要等着最后一集更新呢…

环境及涉及库

  • Python3.6
  • urllib
  • requests
  • re

内容

  • 爬取过程
  • urllib库和requests库的区分

页面获取

        首先随便进入一个 帖子,都是官推图,就选你了。

        帖子一进去界面长这样。
Python爬取贴吧图片(含urllib库和requests库的两种爬取方式)_第1张图片
        然后键盘按下F12,打开浏览器控制台,再刷新界面。在Network分类下,观察到控制台显示了页面中各项的请求和回应报文详情。随便点击一个项,可以在其右侧的Headers中找到Request Headers的信息。
Python爬取贴吧图片(含urllib库和requests库的两种爬取方式)_第2张图片
        先说明一下为什么要找这个Headers信息,为了维护各公司网站的资源,现在各网站大都配有反爬虫机制,就是为了防止网站资源被随意批量的窃取。如果你的ip连续多次访问某一含反爬虫机制的网站,你的ip就会被网站检测到,并限制你的ip访问或是将你的ip访问禁止。

        所以这就需要我们每次访问都变更自己的ip或是将我们的访问伪装成浏览器访问。

        变更ip可以使用高匿的ip代理,这里推荐一个网站 西刺代理,里面有各种国内免费高匿ip供你选择,就是质量不太好,因为是免费…   经常要更换,并且还要看脸…所以在这里不推荐使用第一种方法。

        现在的反爬虫绕过的普遍方法还是伪装成浏览器访问,而伪装成浏览器就只需伪装浏览器的请求报文中的Headers即可。所以 用浏览器查看请求报文的内容就是为了反爬虫绕过啦。

        回到正题 ,伪装Headers其实最重要的就是伪装User-Agent这一项,或者再加上Host字段。
Python爬取贴吧图片(含urllib库和requests库的两种爬取方式)_第3张图片
        在Py文件中创建一个Headers字典,分别将这两项的名称和内容作为键和键值。这样我们的请求头就构建好啦。

headers={
   
    'User-Agent':'Mozilla/5.0 (Windows NT 10.0; WOW64)\
     AppleWebKit/537.36 (KHTML, like Gecko)\
     Chrome/65.0.3314.0 Safari/537.36 SE 2.X MetaSr 1.0',
    'Host': 'tieba.baidu.com'
}

        开始获取页面信息,先import requests,使用get方法进行获取。

def getHtml(url,headers):
    try:
        r=requests.get(url,headers)
        r.encoding='utf8' # 将对象编码转换成UTF-8编码
        html=r.text
    except:
        print("failed to geturl") # 如果网络连接异常,则报错。
    else:
        return html

        来先尝试一下能不能成功获取到html文本,输入以下代码测试。

t=getHtml(url,headers).text
print(t)

        结果如下:

你可能感兴趣的:(python)