爬虫 | 【实践】百度搜索链接爬取,生成标题词云 | 以“AI换脸”为例

这篇具有很好参考价值的文章主要介绍了爬虫 | 【实践】百度搜索链接爬取,生成标题词云 | 以“AI换脸”为例。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

📚链接爬取

🐇流程梳理

🐇代码实现

🐇结果

📚词云生成

🐇代码实现

🐇结果


📚链接爬取

🐇流程梳理

  • 总体流程是:构建搜索链接 -> 发送HTTP请求 -> 解析网页内容 -> 提取标题和链接 -> 判断重复 -> 写入csv工作表 -> 保存csv工作簿

  • 循环遍历100页(暂定,实现翻页)的搜索结果,完成全部数据的提取和保存。

  • key:在百度搜索结果页面中,通常每个搜索结果都包含在一个<h3>标签内,并具有一个特定的CSS类名为"t"

🐇代码实现

# 发送HTTP请求并处理URL
import urllib
from urllib import request, parse
# 管理和处理HTTP请求和响应中的Cookie信息
import http.cookiejar
# 解析和提取HTML/XML数据
from bs4 import BeautifulSoup
# 读取和编辑数据
import openpyxl
import random
import time

# 随机等待时间的函数
# 避免以高频率向服务器发送请求造成宕机
def random_wait():
    # 生成一个随机的等待时间,范围为1到5秒
    wait_time = random.uniform(1, 5)
    time.sleep(wait_time)

# 创建一个新的Excel工作簿对象
workbook = openpyxl.Workbook()
# 返回工作簿中的活动工作表对象,表明之后的代码对这个工作表进行操作
worksheet = workbook.active
# 添加标题
worksheet.append(
    ['Titles', 'Links'])
# 标题集合,用于之后重复标题的处理
titles_set = set()

word = input("请输入搜索的关键词:")
for page in range(1, 101):
    print("现在是第" + str(page) + "页")
    # quote()函数用于将字符串进行URL编码
    link = "http://www.baidu.com/s?wd="+urllib.parse.quote(word)
    url = f"{link}?page={page}"
    headers = {"Accept": "text/html, application/xhtml+xml, image/jxr, */*",
               "Accept - Encoding": "gzip, deflate, br",
               "Accept - Language": "zh - CN",
               "Connection": "Keep - Alive",
               "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:109.0) Gecko/20100101 Firefox/119.0",
               # 请求的来源页面
               "referer": "baidu.com"}

    # 创建一个CookieJar对象,用于保存网站返回的Cookie信息。
    Cookie = http.cookiejar.CookieJar()
    # 创建一个opener对象,使用CookieJar处理器来处理Cookie,实现Cookie的自动管理。
    opener = urllib.request.build_opener(urllib.request.HTTPCookieProcessor(Cookie))

    # 将headers字典中的键值对转化为元组,并添加到headall列表中。
    pairs = []
    for key, value in headers.items():
        item = (key, value)
        pairs.append(item)
    # 将pairs列表设置为opener的请求头
    opener.addheaders = pairs
    # 将opener安装为全局默认的urlopen()函数的opener。
    urllib.request.install_opener(opener)
    # 发送请求并获取网页内容。
    data = urllib.request.urlopen(url).read().decode('utf-8')
    # 解析网页内容,生成BeautifulSoup对象。
    soup = BeautifulSoup(data, 'html.parser')

    # 查找名为'h3',class属性为't'的HTML元素
    # 在百度搜索结果页面中,通常每个搜索结果都包含在一个<h3>标签内,并具有一个特定的CSS类名为"t"。
    for result_table in soup.find_all('h3', class_='t'):
        # 调用等待时间函数,防止宕机
        random_wait()
        a_click = result_table.find("a")
        # 获取标题
        title = a_click.get_text()
        # 获取链接
        link = str(a_click.get("href"))

        # 如果标题已经存在于集合中,跳过此条记录,而且不要视频大全
        if title in titles_set or "视频大全" in title:
            continue
        # 将标题添加到集合中
        titles_set.add(title)

        print("标题:" + title)  # 标题
        print("链接:" + link)  # 链接
        worksheet.append([title, link])
        workbook.save('AI换脸_法律_案件.csv')

🐇结果

  • 关键词设置为:AI换脸 法律 案件

爬虫 | 【实践】百度搜索链接爬取,生成标题词云 | 以“AI换脸”为例,# 简易版爬虫,大数据与数据分析,爬虫,数据可视化,百度,人工智能

📚词云生成

🐇代码实现

  • 用爬取的全部标题来构建词云
# coding:utf-8
import jieba  # 导入分词库
import collections  # 导入collections库,用于词频统计
import wordcloud  # 导入生成词云图的库
import matplotlib.pyplot as plt  # 导入绘图库

# 打开文件
with open(r"AI换脸_法律_案件.txt", encoding='utf-8') as f:
    data = f.read()

# 使用jieba库进行分词,默认精确模式
w_cut = jieba.cut(data, cut_all=False)

# 存储分词结果的列表
word_list = []
# 设置排除词
word_remove = [u',', u' ', u'。', u'、', u'\n', u'', u'(', u')',  u'“', u'”', u',', u'!', u'?', u'【', u'】', u'...', u'_', u':', '|', '-', u'的', u'是', u'了', u'我', u'我们', u'腾讯', u'哔哩', u'百度', u'新浪', u'你', u'又', u'被', u'他', u'谁', u'人']
# 遍历分词结果,过滤掉排除词,将有效词添加到word_list中
for x in w_cut:
    if x not in word_remove:
        word_list.append(x)  

# 使用Counter进行词频统计
word_counts = collections.Counter(word_list)  
# 取出词频最高的前50个词
word_counts_top50 = word_counts.most_common(50)  
# 打印出前50个词云及对应数量
print(word_counts_top50)  
# 将词频结果转换为字符串形式
word_counts_top50 = str(word_counts_top50)  

w = wordcloud.WordCloud(
    # 设置词云生成时的中文字体
    font_path='C:\Windows\Fonts\STKAITI.TTF',  
    # 设置词云的背景颜色为白色
    background_color='white',  
    # 设置词云图片的宽度
    width=700,  
    # 设置词云图片的高度
    height=600,  
    # 设置词云中显示的最大字体大小
    max_font_size=180  
)
# 根据词频生成词云图
w.generate_from_frequencies(word_counts)  
# 创建一个绘图窗口
plt.figure(1, figsize=(10, 8))  
# 显示词云图
plt.imshow(w)  
# 不显示坐标轴
plt.axis("off")  
# 展示图表
plt.show()  
# 将词云图保存为图片文件
w.to_file("wordcloud_input.png")  

  • 关于jieba.cut:除了 cut_all = False​,jieba库还支持以下模式:
    • cut_all = True​:全模式,将文本中的所有可能是词的部分都进行分词,可能会产生冗余和不常见的词。
    • cut_for_search = True​:搜索引擎模式,将文本中可能是词的部分进行分词,同时使用了较多的细粒度切分,适用于搜索引擎构建索引或相关场景。
    • HMM =True​:开启隐式马尔可夫模型(Hidden Markov Model),用于在未登录词(out-of-vocabulary,OOV)的情况下进行中文分词,适用于处理未登录词较多的场景。
  • 关于字体设置font_path='C:\Windows\Fonts\STKAITI.TTF',在控制面板 -> 外观与个性化 -> 字体处,可以找到心仪字体。

爬虫 | 【实践】百度搜索链接爬取,生成标题词云 | 以“AI换脸”为例,# 简易版爬虫,大数据与数据分析,爬虫,数据可视化,百度,人工智能

爬虫 | 【实践】百度搜索链接爬取,生成标题词云 | 以“AI换脸”为例,# 简易版爬虫,大数据与数据分析,爬虫,数据可视化,百度,人工智能 爬虫 | 【实践】百度搜索链接爬取,生成标题词云 | 以“AI换脸”为例,# 简易版爬虫,大数据与数据分析,爬虫,数据可视化,百度,人工智能

🐇结果

爬虫 | 【实践】百度搜索链接爬取,生成标题词云 | 以“AI换脸”为例,# 简易版爬虫,大数据与数据分析,爬虫,数据可视化,百度,人工智能


 补报错杂货铺:

爬虫 | 【实践】百度搜索链接爬取,生成标题词云 | 以“AI换脸”为例,# 简易版爬虫,大数据与数据分析,爬虫,数据可视化,百度,人工智能文章来源地址https://www.toymoban.com/news/detail-740082.html

到了这里,关于爬虫 | 【实践】百度搜索链接爬取,生成标题词云 | 以“AI换脸”为例的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 百度文库爬虫(爬取需要下载券的文档)

    import requests import re import json import os session = requests.session() def fetch_url(url):     return session.get(url).content.decode(\\\'gbk\\\') def get_doc_id(url):     return re.findall(\\\'view/(.*).html\\\', url)[0] def parse_type(content):     return re.findall(r\\\"docType.*?:.*?\\\'(.*?)\\\',\\\", content)[0] def parse_title(content):     return re.fi

    2023年04月23日
    浏览(38)
  • 【爬虫案例】用Python爬取百度热搜榜数据!

    目录 一、爬取目标 二、编写爬虫代码 三、同步视频讲解 四、完整源码 您好,我是@马哥python说,一名10年程序猿。 本次爬取的目标是:百度热搜榜 分别爬取每条热搜的: 热搜标题、热搜排名、热搜指数、描述、链接地址。 下面,对页面进行分析。 经过分析,此页面有XH

    2024年02月13日
    浏览(39)
  • 爬虫学习笔记-scrapy链接提取器爬取读书网链接写入MySQL数据库

    1.终端运行scrapy startproject scrapy_read,创建项目 2.登录读书网,选择国学(随便点一个) 3.复制链接(后面修改为包括其他页)  4.创建爬虫文件,并打开  5.滑倒下方翻页处,右键2,点击检查,查看到a标签网址,复制 6.修改爬虫文件规则allow(正则表达式),\\\'d\\\'表示数字,\\\'+\\\'表示多个,\\\'.\\\'使\\\'.\\\'生效

    2024年02月19日
    浏览(48)
  • 【Python爬虫实战】1.爬取A股上市公司年报链接并存入Excel

     数据来源:巨潮资讯  项目需求:按照股票代码,公司名称,年报全称,年份,下载链接等要素写入excel表  使用语言:python  第三方库:requests, re , time等 成品展示:  废话就到这里,直接开干! 1.寻找接口 众所周知,爬取网页数据一般可以通过寻找网页结构规律和爬取接

    2024年02月04日
    浏览(44)
  • 百度松果菁英班——机器学习实践六:股票行情爬取与分析

    飞桨AI Studio星河社区-人工智能学习与实训社区 这篇文章好像有点大,所以上边网页点进去是看不到的,进入环境之后就能看了 定义了一个函数 getHtml(url) ,用于获取指定URL页面的HTML内容。使用 requests.get() 方法发送GET请求,通过fake_useragent生成随机的User-Agent来伪装请求头,避

    2024年04月14日
    浏览(36)
  • 【爬虫】根据关键词自动搜索并爬取结果

    根据自动搜索并爬取网页的信息 网页有两种情况:可以直接获取页数的和不可以直接获取页数的; 两种情况可以采取不同的方法: 情况一:先爬取页数,再爬取每页的数据 情况二:无法爬取到页码数,只能换页爬取的

    2024年02月12日
    浏览(46)
  • python爬取豆瓣电影排行前250获取电影名称和网络链接[静态网页]————爬虫实例(1)

    目录 1.算法原理: 2.程序流程: 3.程序代码: 4.运行结果(部分结果展示): 5.结果分析: (1)利用import命令导入模块或者导入模块中的对象; ①利用requests库获取数据; ②用BeautifulSoup库将网页源代码转换成BeautifulSoup类型,以便于数据的解析和处理; ③用time库进行时间延时

    2023年04月16日
    浏览(66)
  • selenium爬虫——以爬取澎湃新闻某搜索结果为例

    本程序致力于实现以下目标: (1)爬取澎湃新闻关于“反腐”的全部文章内容; (2)按标题、链接将其整理到excel中; (3)将标题和文章整合到一个word文档中。 许久没有正经写过了,有些生疏,代码耦合度蛮高的,所幸目标达成了。 webdriver的版本要与浏览器一致 如果用

    2024年02月06日
    浏览(46)
  • 【爬虫】3.5 实践项目——爬取网站的图像文件

            指定一个网站(例如中国天气网站),可以爬取这个网站中的所有图像文件,同时把这些文件保存到程序所在文件夹的images子文件夹中。 首先设计了一个 单线程 的爬取程序,这个程序 会因网站的某个图像下载过程缓慢而效率低下 ,为了提高爬取的效率,另外设

    2024年02月07日
    浏览(43)
  • 【爬虫】2.6 实践项目——爬取天气预报数据

    在中国天气网(天气网)中输入一个城市的名称,例如输入深圳,那么会转到地址深圳天气预报,深圳7天天气预报,深圳15天天气预报,深圳天气查询的网页显示深圳的天气预报,其中101280601是深圳的代码,每个城市或者地区都有一个代码。如下图: 在上图中可以看到,深圳今天,

    2024年02月06日
    浏览(81)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包