使用Urllib(2)--浏览器伪装

  • 由上一个爬取到内存中的例子爬取京东的标题,轻而易举的就爬下来了,接下来我们将网址换一个例如:https://www.qiushibaike.com/
    • import urllib.request
      import re
      #ignore小细节自动略过,大大减少出错率
      #将数据爬到内存中
      #http://www.jd.com
      url = "https://www.qiushibaike.com/"
      data = urllib.request.urlopen(url).read().decode("utf-8","ignore")
      pat = "<title>(.*?)</title>"
      #re.S模式修正符,网页数据往往是多行的,避免多行的影响
      print(re.compile(pat,re.S).findall(data))

       

    • 报错信息表示:远程关闭了我们的链接,有可能IP被封了,也有可能爬虫被识别了(这是大多数)
  • 浏览器伪装
    • 上述报错信息,而后用浏览器还能进行浏览,这就证明我们的IP没有被封,如果想要继续访问,我们就可以进行浏览器伪装,对方看你是不是浏览器,如果是通过
    • import urllib.request
      import re
      #浏览器伪装
      #建立opener对象,opener可以进行设置
      opener = urllib.request.build_opener()
      #构建元祖User-Agent,键值
      UA = ("user-agent","Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.132 Safari/537.36")
      #将其放入addheaders属性中
      opener.addheaders = [UA]
      #将opener安装为全局
      urllib.request.install_opener(opener)
      url = "http://www.qiushibaike.com"
      pat = "<title>(.*?)</title>"
      data = urllib.request.urlopen(url).read().decode("utf-8","ignore")
      print(re.compile(pat,re.S).findall(data))

posted @ 2020-04-18 09:36  手可摘星辰/*  阅读(194)  评论(0编辑  收藏  举报