模拟浏览器、用代理ip登陆网页爬取数据

  有一些网站他们有反爬虫的机制,不会让你轻易的爬取数据,这就是我们说的爬虫与反爬虫之间的斗争,但不是说不能爬就不能爬的,我们可以使用多种办法来爬取我们所要的内容。

1.模拟浏览器登陆爬取数据

import urllib.request
import re
url="http://www.baidu.com"
#可以随便一个网页
headers=("User-Agent","Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.87 Safari/537.36")
#模拟浏览器用户代理headers,浏览器字段名(打开浏览器f12查看)
opener=urllib.request.build_opener()
#创建一个opener对象
opener.addheaders=[headers]
#addheaders属性去打开,但是这样会报错
urllib.request.install_opener(opener)
#我们需要将opener添加为全局变量,urlopen都将会以模拟的headers去啪取网页
data=urllib.request.urlopen(url).read().decode("utf-8","ignore")
#data就是爬取到的数据

2.用代理ip取爬取网页

  因为一些网站如果你用你自己的ip地址通过爬虫同一时间大量频繁的访问,那些网站会识别出你用的是爬虫,这样会封你的ip,这样你就爬不到数据了。
  接下来用代理ip地址去爬取数据:

import urllib.request
import re
def ues_Proxy(url,proxy_addr):                                          
    #找代理爬数据
    proxy=urllib.request.ProxyHandler({"http":proxy_addr})              
    #建立代理proxy_addr{ip加端口号}
    opener=urllib.request.build_opener(proxy,urllib.request.HTTPHandler)
    #打开代理(urllib.request.HTTPHandler)固定写法
    urllib.request.install_opener(opener)                               
    #定义全局opener
    data=urllib.request.urlopen(url)                                    
    #打开想爬取的网页
    return data

proxy_addr="219.141.153.41:80"
url="http://www.baidu.com"
data=ues_Proxy(url,proxy_addr)                          
#调用   
print(data)


 

你可能感兴趣的:(模拟浏览器、用代理ip登陆网页爬取数据)