分享一个使用Python网络爬虫抓取百度关键词和链接的代码(bs4篇)

2022-08-17 17:18:06 浏览数 (1)

大家好,我是皮皮。

一、前言

前几天在Python白银交流群有个叫【꯭】的粉丝分享了一份Python网络爬虫代码,用来获取某度关键词和链接的。当时他使用正则表达式的提取方式获取标题和链接,分享一个使用Python网络爬虫抓取百度关键词和链接的代码(正则表达式篇),今天这篇文章我们将使用bs4来进行实现。

二、实现过程

直接上代码了,如下所示:

代码语言:javascript复制
# -*- coding: utf-8 -*-
# @Time    : 2022/4/20  18:24
# @Author  : 皮皮:Python共享之家
# @File    : demo.py

import requests
from bs4 import BeautifulSoup
import time
import pandas as pd


# 从element里面进行分析,可以知道百度会给一个自己加密的Url
def convert_url(url):
    resp = requests.get(url=url,
                        headers=headers,
                        allow_redirects=False
                        )
    return resp.headers['Location']


#
# 获取url

def get_url(wd, num):
    s = requests.session()
    total_title = []
    total_url = []
    total_info = []
    # 第1页为小于10的数字 10为第2页,20为第三页,30为第四页,以此类推
    num = num * 10 - 10
    for i in range(-10, num, 10):
        url = 'https://www.baidu.com/s'  # 点击界面第二页可以看到网页变化截取关键部分 https://www.baidu.com/s?wd=python&pn=10
        params = {
            "wd": wd,
            "pn": i,
        }
        r = s.get(url=url, headers=headers, params=params)
        print("返回状态码:", r.status_code)  # 可以看对应Js 正常网页访问时候 status状态码 为200
        soup = BeautifulSoup(r.text, 'lxml')
        for so in soup.select('#content_left .t a'):
            # g_url = convert_url(so.get('href'))  # 对界面获取的url进行进行访问获取真实Url
            g_url = so.get('href')  # 对界面获取的url进行进行访问获取真实Url
            g_title = so.get_text().replace('n', '').strip()  # 根据分析标题无对应标签 只能获取标签内文字 去掉换行和空格
            print(g_title, g_url)
            total_title  = [g_title]
            total_url  = [g_url]
        time.sleep(1   (i / 10))
        print("当前页码:", (i   10) / 10   1)
    try:
        total_info = zip(total_title, total_url)
        df = pd.DataFrame(data=total_info, columns=['标题', 'Url'])
        df.to_csv(r'./web_data.csv', index=False, encoding='utf_8_sig')
        print("保存成功")
    except:
        return 'FALSE'


if __name__ == '__main__':
    while True:  # 循环
        headers = {
            "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:73.0) Gecko/20100101 Firefox/73.0",
            "Host": "www.baidu.com",
        }
        wd = input("输入搜索内容:")
        num = int(input("输入页数:"))
        get_url(wd, num)

这个代码亲测好使,运行之后结果如下。

在本地也会自动地生成csv存储文件,内容如下:

三、总结

大家好,我是皮皮。这篇文章主要分享了一个使用Python网络爬虫抓取百度关键词和链接的代码。上一篇文章,使用了正则表达式来做提取,本文使用了bs4来进行实现提取的,行之有效。下一篇文章,将给大家分享使用xpath来提取百度关键词和链接,也欢迎大家积极尝试,一起学习。

最后感谢粉丝【꯭】分享,感谢【dcpeng】、【月神】在运行过程中给出的代码建议,感谢粉丝【冯诚】、【艾希·觉罗】等人参与学习交流。

0 人点赞