谨以此记录个人学习过程,以期为后来者提供一丝半毫之参考。
准备工作:pip install urllib
第一:实现基本网页抓取。
第二:有些网站不能通过机器简单访问。需要使用代理绕过服务器的鉴别阻拦。
第三: 考虑把User-Agent做成一个列表,以便随机使用。常见 【User-Agent】
和参考代码有区别,没有使用随机 IP。
from urllib import request
import random
from urllib.request import build_opener,ProxyHandler
# User_Agent列表
user_agent_list = [
"Mozilla/5.0(Macintosh;IntelMacOSX10.6;rv:2.0.1)Gecko/20100101Firefox/4.0.1",
"Mozilla/4.0(compatible;MSIE6.0;WindowsNT5.1)",
"Opera/9.80(WindowsNT6.1;U;en)Presto/2.8.131Version/11.11",
"Mozilla/5.0(Macintosh;IntelMacOSX10_7_0)AppleWebKit/535.11(KHTML,likeGecko)Chrome/17.0.963.56Safari/535.11",
"Mozilla/4.0(compatible;MSIE7.0;WindowsNT5.1)",
"Mozilla/4.0(compatible;MSIE7.0;WindowsNT5.1;Trident/4.0;SE2.XMetaSr1.0;SE2.XMetaSr1.0;.NETCLR2.0.50727;SE2.XMetaSr1.0)"
]
# 产生一个随机User-Agent
headers ={
# 从上面列表中随机取出一个
# random.choice:从一个不为空的课表里面随机取出一个
'User-Agent':random.choice(user_agent_list)
}
# ip地址列表:
ip_list=[
# '209.97.171.128',
'114.250.25.19'
]
# 产生一个随机ip
proxies={
'http':random.choice(ip_list)
}
url = 'http://www.qiushibaike.com/'
req = request.Request(url,headers=headers)
# 创建代理ip对象
print(proxies)
pro_supper = ProxyHandler(proxies)
# 不能使用urlopen()函数,使用build_opener创建一个对象
opener = build_opener(pro_supper)
# 发送请求
res = opener.open(req)
result = res.read().decode('utf8')
print(result)
鸣谢: