分享一个使用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-------------------

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线