分享一个使用Python网络爬虫抓取百度关键词和链接的代码(bs4篇)
优采云 发布时间: 2022-06-21 20:11分享一个使用Python网络爬虫抓取百度关键词和链接的代码(bs4篇)
点击上方“Python共享之家”,进行关注
回复“资源”即可获赠Python学习资料
今
日
鸡
汤
仍怜故乡水,万里送行舟。
大家好,我是皮皮。
一、前言
前几天在Python白银交流群有个叫【꯭】的粉丝分享了一份Python网络爬虫代码,用来获取某度关键词和链接的。当时他使用正则表达式的提取方式获取标题和链接,,今天这篇文章我们将使用bs4来进行实现。
二、实现过程
直接上代码了,如下所示:
# -*- coding: utf-8 -*-<br /># @Time : 2022/4/20 18:24<br /># @Author : 皮皮:Python共享之家<br /># @File : demo.py<br /><br />import requests<br />from bs4 import BeautifulSoup<br />import time<br />import pandas as pd<br /><br /><br /># 从element里面进行分析,可以知道百度会给一个自己加密的Url<br />def convert_url(url):<br /> resp = requests.get(url=url,<br /> headers=headers,<br /> allow_redirects=False<br /> )<br /> return resp.headers['Location']<br /><br /><br />#<br /># 获取url<br /><br />def get_url(wd, num):<br /> s = requests.session()<br /> total_title = []<br /> total_url = []<br /> total_info = []<br /> # 第1页为小于10的数字 10为第2页,20为第三页,30为第四页,以此类推<br /> num = num * 10 - 10<br /> for i in range(-10, num, 10):<br /> url = 'https://www.baidu.com/s' # 点击界面第二页可以看到网页变化截取关键部分 https://www.baidu.com/s?wd=python&pn=10<br /> params = {<br /> "wd": wd,<br /> "pn": i,<br /> }<br /> r = s.get(url=url, headers=headers, params=params)<br /> print("返回状态码:", r.status_code) # 可以看对应Js 正常网页访问时候 status状态码 为200<br /> soup = BeautifulSoup(r.text, 'lxml')<br /> for so in soup.select('#content_left .t a'):<br /> # g_url = convert_url(so.get('href')) # 对界面获取的url进行进行访问获取真实Url<br /> g_url = so.get('href') # 对界面获取的url进行进行访问获取真实Url<br /> g_title = so.get_text().replace('\n', '').strip() # 根据分析标题无对应标签 只能获取标签内文字 去掉换行和空格<br /> print(g_title, g_url)<br /> total_title += [g_title]<br /> total_url += [g_url]<br /> time.sleep(1 + (i / 10))<br /> print("当前页码:", (i + 10) / 10 + 1)<br /> try:<br /> total_info = zip(total_title, total_url)<br /> df = pd.DataFrame(data=total_info, columns=['标题', 'Url'])<br /> df.to_csv(r'./web_data.csv', index=False, encoding='utf_8_sig')<br /> print("保存成功")<br /> except:<br /> return 'FALSE'<br /><br /><br />if __name__ == '__main__':<br /> while True: # 循环<br /> headers = {<br /> "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:73.0) Gecko/20100101 Firefox/73.0",<br /> "Host": "www.baidu.com",<br /> }<br /> wd = input("输入搜索内容:")<br /> num = int(input("输入页数:"))<br /> get_url(wd, num)<br />
这个代码亲测好使,运行之后结果如下。
在本地也会自动地生成csv存储文件,内容如下:
三、总结
大家好,我是皮皮。这篇文章主要分享了一个使用Python网络爬虫抓取百度关键词和链接的代码。上一篇文章,使用了正则表达式来做提取,本文使用了bs4来进行实现提取的,行之有效。下一篇文章,将给大家分享使用xpath来提取百度关键词和链接,也欢迎大家积极尝试,一起学习。
最后感谢粉丝【꯭】分享,感谢【dcpeng】、【月神】在运行过程中给出的代码建议,感谢粉丝【冯诚】、【艾希·觉罗】等人参与学习交流。
小伙伴们,快快用实践一下吧!如果在学习过程中,有遇到任何问题,欢迎加我好友,我拉你进Python学习交流群共同探讨学习。
-------------------End-------------------