爬虫(二)使用urllib爬取百度贴吧的数据

下一期我就不用urllib来抓取数据了,因为urllib现在已经很少人用,大部分人用得是requests,requests也是基于底层urllib的一个模块。

首先我先来讲一下关于如何使用动态的UA!

动态UA就是指在自己创建的一个列表里随机选择一个UA当做请求浏览器的一个请求头.

我们先自定义一个列表User_Agents,然后将要添加的UA传进去.
UA大全

python 复制代码
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

python 复制代码
from random import  choice
headers = {'User-Agent': choice(User_Agents)
               }

至此一个动态UA就完成了!

接下来给大家献上爬取百度贴吧的代码

思路:我们知道要爬取有页数的url就要找出其中的规律

我们根据百度贴吧每页翻页的url可以得出基础的url是base_html='https://tieba.baidu.com/f?ie=utf-8\&{}

python 复制代码
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(url=url, headers=headers)
    #获取响应
    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('请输入要下载的内容:')
    num=input('请输入要下载的页数:')
    base_html='https://tieba.baidu.com/f?ie=utf-8&{}'
    for pn in range(int(num)):
        arg={
            'pn':pn*50,
            'kw':concent
        }
        file_name='第'+str(pn+1)+'页'
        #将arg转码
        arg = urlencode(arg)
        print(f'正在下载{concent}的'+file_name)
		#base_html='https://tieba.baidu.com/f?ie=utf-8&{pn*50}
        html=base_html.format(arg)
        #得到网页里的数据
        html_bytes=get_html(html)
        save_html(file_name,html_bytes)

#让程序跑起来
if __name__ == '__main__':
    main()
    print('下载完成')

这是爬取内容个每页的源代码,要获取相应的图片和内容还需要去解析提取。

看完的点个赞吧,喜欢的可以点点关注哦!

相关推荐
深蓝电商API21 小时前
逆向工程入门:从Chrome DevTools到JS混淆还原
前端·javascript·chrome·爬虫·chrome devtools
sky丶Mamba1 天前
从入门到进阶:网络爬虫、反爬与反反爬技术全解析
爬虫
KaMeidebaby1 天前
卡梅德生物技术快报|抗原如何自己检测?FAdV-4 重组抗原制备与 ELISA 体系技术调试指南
前端·人工智能·物联网·算法·百度
qq7422349842 天前
从“感知”到“决断”:测评百度伐谋产业决策智能体的端到端推理与行动机制
人工智能·算法·百度·大模型·运筹优化
Mr.Daozhi2 天前
Playwright实战:抓取Meta Ad Library动态页面的三级降级策略
爬虫·python·自动化·playwright·meta广告
Mr.Daozhi2 天前
跨境电商选品完整流水线:Google Trends筛词+Meta广告分析,CLI工具设计实战
开发语言·爬虫·python·跨境电商·工具链·选品
2601_961194022 天前
初中英语教资笔试资源|科三教案模板和知识点资料
百度·微信·微信公众平台·facebook·twitter·新浪微博
huangdong_2 天前
电商平台图片防盗链机制分析与绕过方案
爬虫
HackTwoHub2 天前
WEB扫描器Invicti-Professional-V26.50.0(自动化爬虫扫描)更新
前端·人工智能·chrome·爬虫·web安全·网络安全·自动化
电商API_180079052473 天前
免 TOP 入驻,第三方淘宝商品详情 API 快速接入与代码示例
java·大数据·开发语言·数据库·爬虫·数据分析