• 爬取百度搜索结果标题


    # 爬取百度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 + "
    ")
    
    
    
    #输入关键词以及需要爬取的页数
    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、将提取信息写入文件

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

  • 相关阅读:
    MySQL调优篇 | 逻辑架构解读(1)
    SQLPlus 在连接时通常有四种方式
    Oracle解决索引碎片功能
    windows2003 ftp 无法下载 解决
    bat记录
    ACCESS字符串操作函数
    缓存和RAID如何提高磁盘IO性能
    TortoiseSVN 命令 (命令行执行工具)
    在RHEL5下实现磁盘分区和磁盘配额
    PS 命令详解
  • 原文地址:https://www.cnblogs.com/zijidefengge/p/13359492.html
Copyright © 2020-2023  润新知