新版的 python 把 urllib2 改成了 urllib.request,所以直接导入 urllib2 会报错。 这是我通过 chrome92 版本的浏览器发送请求的时候抓到的头部信息,只要我在发送请求时引用一个 User-Agent 信息就可以了。
Connection: keep-alive Upgrade-Insecure-Requests: 1 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/92.0.4515.131 Safari/537.36 Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,/;q=0.8,application/signed-exchange;v=b3;q=0.9 Accept-Encoding: gzip, deflate Accept-Language: zh-CN,zh;q=0.9
访问的是 淘宝的 python 安装包镜像。 没有伪装浏览器,在访问一定次数后就访问不了了,伪装后就没有限制了。
import urllib.request as urllib2
headers = {
'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/92.0.4515.131 Safari/537.36'
}
url = "http://npm.taobao.org/mirrors/python/"
request = urllib2.Request(url, headers=headers)
html_content = urllib2.urlopen(request).readlines()
for i in html_content:
i = str(i)
if("href=" in i and ">" in i):
a = i.index("href=");
b = i.index(">");
i = i[a+6:b-1]
print(i)
爬取所有的 a 元素,并提取 href 里面的内容。
效果图如下: