怎么在58建设企业的网站,wordpress 商品比价,上海紫昌网站建设,旅游网站建设的建议下一期我就不用urllib来抓取数据了#xff0c;因为urllib现在已经很少人用#xff0c;大部分人用得是requests#xff0c;requests也是基于底层urllib的一个模块。
首先我先来讲一下关于如何使用动态的UA#xff01; 动态UA就是指在自己创建的一个列表里随机选择一个UA当做…下一期我就不用urllib来抓取数据了因为urllib现在已经很少人用大部分人用得是requestsrequests也是基于底层urllib的一个模块。
首先我先来讲一下关于如何使用动态的UA 动态UA就是指在自己创建的一个列表里随机选择一个UA当做请求浏览器的一个请求头. 我们先自定义一个列表User_Agents,然后将要添加的UA传进去. UA大全
User_Agents [User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.100 Safari/537.36,Opera/9.80 (Windows NT 6.1; U; zh-cn) Presto/2.9.168 Version/11.50,Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; WOW64; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; .NET4.0C; InfoPath.3)]
传入进去之后我们使用random模块中的choice去随机选择UA
from random import choice
headers {User-Agent: choice(User_Agents)}至此一个动态UA就完成了 接下来给大家献上爬取百度贴吧的代码 思路我们知道要爬取有页数的url就要找出其中的规律 我们根据百度贴吧每页翻页的url可以得出基础的url是base_htmlhttps://tieba.baidu.com/f?ieutf-8{}
from urllib.request import urlopen,Request
from random import choice
from urllib.parse import quote,urlencode#定义一个得到url数据的函数
def get_html(url):User_Agents [User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.100 Safari/537.36,Opera/9.80 (Windows NT 6.1; U; zh-cn) Presto/2.9.168 Version/11.50,Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; WOW64; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; .NET4.0C; InfoPath.3)]headers {User-Agent: choice(User_Agents)}#伪装浏览器response Request(urlurl, headersheaders)#获取响应html urlopen(response)#把读的到数据返回return html.read()#定义一个保存数据文件的函数
def save_html(file_name,html_bytes):with open(file_name,wb) as rfile:rfile.write(html_bytes)rfile.close()
#定义一个主函数
def main():concent input(请输入要下载的内容:)numinput(请输入要下载的页数)base_htmlhttps://tieba.baidu.com/f?ieutf-8{}for pn in range(int(num)):arg{pn:pn*50,kw:concent}file_name第str(pn1)页#将arg转码arg urlencode(arg)print(f正在下载{concent}的file_name)#base_htmlhttps://tieba.baidu.com/f?ieutf-8{pn*50}htmlbase_html.format(arg)#得到网页里的数据html_bytesget_html(html)save_html(file_name,html_bytes)#让程序跑起来
if __name__ __main__:main()print(下载完成)这是爬取内容个每页的源代码要获取相应的图片和内容还需要去解析提取。
看完的点个赞吧喜欢的可以点点关注哦