一、观察网页
通过谷歌浏览器进入虎扑,搜索世界杯新闻 (网址:https://bbs.hupu.com/search?q=%E4%B8%96%E7%95%8C%E6%9D%AF&topicId=&sortby=general&page=1) 翻页的同时可以发现网址仅最后一个数字发生改变;
点击Network,点击刷新,打开最上面的网址,点击Preview,发现我们需要的世界杯新闻信息就在这个网站上。故可判断该网站是静态网页。
image-20221213141005751
二、请求数据
在搜索框中点击“Network”,刷新网页后,点击“Doc”,查看栏下“Name”的链接,其中“Headers”栏,发现该网页的“Requests Method”为“GET”,状态代码为“200”Content-Type为text/html;charset=UTF-8,说明可以通过requests库请求数据。
具体代码如下:
#导入第三方库 import requests from bs4 import BeautifulSoup import pandas as pd #请求数据 items=[] for i in range(1,3):#进行for循环 if i==1: url='https://bbs.hupu.com/search?q=%E4%B8%96%E7%95%8C%E6%9D%AF&topicId=&sortby=general&page=1'#第1页获取链接 else: url=f'https://bbs.hupu.com/search?q=%E4%B8%96%E7%95%8C%E6%9D%AF&topicId=&sortby=general&page={i}'#第i页获取链接 r=requests.get(url) r.encoding=r.apparent_encoding #防止乱码 text=r.text
三、解析数据
通过chrome控制台对DOM结构进行分析。结果如下图:
本着从特殊到一般的思路进行搜索,通过一个新闻信息进行分析,找出所有新闻的共性。通过分析发现,我们需要的信息是一个a标签对应的内容,然后我们需要向上进行搜索,标签的上一级是一个class属性值为content-wrap的div标签,这个div的上一级是一个class属性值为bbs-search-web-content的div标签。检查后可以发现所有需要的数据都在这个标签下。于是通过BeautifulSoup库来解析数据:
#解析数据 soup = BeautifulSoup(text,'html.parser') div_list=soup.find('div',class_='bbs-search-web-content').find_all('div',class_='content-wrap') for div in div_list: title=div.find('a').text href=div.find('a').get('href') child_url='https://www.hupu.com/app/'+href data=div.find('span').text item=[title,data,child_url] items.append(item)
四、存储数据
利用pandas库将爬取的信息以Excel表格的形式存储,代码如下:
#pandas库保存数据 df=pd.DataFrame(items,columns=['标题','发布时间','链接'])#将总列表中的列标题分别命名为标题、发布时间、链接 df.to_excel('世界杯新闻.xlsx',encoding='utf_8_sig')
五、全局代码及运行结果
1.全局代码
#导入第三方库 import requests from bs4 import BeautifulSoup import pandas as pd #请求数据 items=[] for i in range(1,3):#进行for循环 if i==1: url='https://bbs.hupu.com/search?q=%E4%B8%96%E7%95%8C%E6%9D%AF&topicId=&sortby=general&page=1'#第1页获取链接 else: url=f'https://bbs.hupu.com/search?q=%E4%B8%96%E7%95%8C%E6%9D%AF&topicId=&sortby=general&page={i}'#第i页获取链接 r=requests.get(url) r.encoding=r.apparent_encoding #防止乱码 text=r.text #解析数据 soup = BeautifulSoup(text,'html.parser') div_list=soup.find('div',class_='bbs-search-web-content').find_all('div',class_='content-wrap') for div in div_list: title=div.find('a').text href=div.find('a').get('href') child_url='https://www.hupu.com/app/'+href data=div.find('span').text item=[title,data,child_url] items.append(item) #pandas库保存数据 df=pd.DataFrame(items,columns=['标题','发布时间','链接'])#将总列表中的列标题分别命名为标题、发布时间、链接 df.to_excel('世界杯新闻.xlsx',encoding='utf_8_sig')
2.运行结果
以上就是“Python爬取虎扑世界杯新闻”的全部内容,希望对你有所帮助。
关于Python技术储备
学好 Python 不论是就业还是做副业赚钱都不错,但要学会 Python 还是要有一个学习规划。最后大家分享一份全套的 Python 学习资料,给那些想学习 Python 的小伙伴们一点帮助!
一、Python所有方向的学习路线
Python所有方向的技术点做的整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。
二、Python必备开发工具
三、Python视频合集
观看零基础学习视频,看视频学习是最快捷也是最有效果的方式,跟着视频中老师的思路,从基础到深入,还是很容易入门的。
四、实战案例
光学理论是没用的,要学会跟着一起敲,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。
五、Python练习题
检查学习结果。
六、面试资料
我们学习Python必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有阿里大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。
最后祝大家天天进步!!
上面这份完整版的Python全套学习资料已经上传至CSDN官方,朋友如果需要可以直接微信扫描下方CSDN官方认证二维码免费领取【保证100%免费】。