爬取百度搜索结果标题

复制代码
# 爬取百度10页的标题

import urllib.request
import re
import urllib.parse

def build_onepage_crawl_function(keyword, number_of_page):
    #构建请求头
    user_agent_header = ("User-Agent","Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:78.0) Gecko/20100101 Firefox/78.0)")
    opener_build = urllib.request.build_opener()
    opener_build.addheaders = [user_agent_header]
    #对搜索关键词进行编码
    encoded_keyword = urllib.parse.quote(keyword) 
    # 通过for循环爬去每一页
    for i in range(int(number_of_page)):
        url = "https://www.baidu.com"
        number_of_page = i * 10 # 构造 &pn=
        print(number_of_page)
        url = url + "/s?wd=" + encoded_keyword + "&pn=" + str(number_of_page) # 完整的url包括关键词说页数,这里keyword本身就是str
        print(url)
        #构造get请求中的url
        original_html = opener_build.open(url, timeout = 2).read().decode("utf-8","ignore")
        #构造正则表达式
        re_search_word = 'data-tools=.{"title":"(.*?)",'
        re_search_result = re.compile(re_search_word).findall(original_html)
        #遍历每一个列表
        for result in re_search_result:
            #写入文件
            with open("C:/users/mike1/desktop/abc.txt", "a", encoding = "utf-8") as f:
                f.write(result + "\n")



#输入关键词以及需要爬取的页数
keyword_input = input("请输入关键词:")
number_of_page_input = input("请输入页数:")
build_onepage_crawl_function(keyword_input, number_of_page_input)
复制代码

思路:

1、首先构造请求头,这里只加了user agent

2、 其次构造get请求,get包括搜索关键字 以及翻页。如果关键字为汉字,则要对汉字进行编码

3、通过for循环对每页内容爬取

4、通过正则表达式提取感兴趣的信息

5、将提取信息写入文件

 

 

结果显示,提取信息明显少于浏览器所见内容。可能漏掉了某些标签。

 

posted @   看星星的派大星  阅读(656)  评论(0编辑  收藏  举报
编辑推荐:
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律
点击右上角即可分享
微信分享提示