搜索
简帛阁>技术文章>python爬虫教你如何快速搜索信息

python爬虫教你如何快速搜索信息

很多时候,我们想要百度一个内容,却往往难以获得有用的信息,这时便需要进行必要的筛选,若是每次都点进连接中去查看,未免太过费时间,这里将利用python爬虫,快速帮你下载百度搜索的各条数据。

1.下面的代码使用时有如下条件:

  1. 安装了火狐浏览器
  2. 安装了火狐驱动,可前往https://github.com/mozilla/geckodriver/releases下载
  3. 安装所需要的相关包,运行时会提示的,推荐使用pip安装

2.这里更重要的还是学习相关技术

  1. selenium的使用(一款自动化测试工具,这里用在爬虫技术中,用于模拟用户行为,可以解决绝大部分的反爬行为)
  2. xpath解析的学习

3.开始写代码

3.1导包
# -*- coding: utf-8 -*-
from selenium import webdriver
from lxml import etree
import os
import time
3.2全局配置
save_path = 'D:\\桌面'  # 文件路径
filename = "结果集"
3.3主类main函数(selenium相关操作)
if __name__ == "__main__":
    key_world = input("请输入您想要搜索的内容:")
    num = int(input("请输入您想要爬取的页数:"))
    filename = input("请输入您想要存储的文件名:")
    urls = []  # 页码索引列表
    for i in range(num):
        url = "https://www.baidu.com/s?wd=" + key_world + "&pn=" + str(
            i * 10) + "&oq=" + key_world + "&ie=utf-8&rsv_pq=da6a000c0001b80d&rsv_t=d7f5m3K7D2ij87xFqs1%2FBxTHWIIxqW6xVfayx6TdZRvpTSctGF1ObM1gLKs"
        urls.append(url)

    driver = webdriver.Firefox()
    for u in urls:
        driver.get(u)
        myPage = driver.page_source  # 获取源码
        spider(myPage)
        time.sleep(2)
    driver.quit()

第一个for循环是根据百度的搜索规律,将搜索内容接入后拼接而成的网址,根据你所需要的页数,把他们放到一个列表中去。随后开启selenium,自动打开火狐浏览器,根据上面的网址列表,分别去遍历,也就是得到每一个网址所对应的以及页面,将该页面的源代码通过page_source方法下载下来,交由spider去解析和存储

3.4爬虫spider
def spider(myPage):
    results = Page_Level(myPage)  # 解析html文档获得结果
    FileSave(results)# 将结果存储到txt文档中
3.5一级页面,数据解析(xpath的使用)
def Page_Level(myPage):  # 一级页面
    dom = etree.HTML(myPage)
    results = []
    channel_names = dom.xpath('//*[@id="content_left"]/div')
    for channel in channel_names:
        try:
            summary = channel.xpath('div[@class="c-abstract"]/text()')
            title_link = channel.xpath('div[@class="f13"]/div[1]/@data-tools')
            print(title_link[0])
            results.append("【" + title_link[0] + "\n" + str(summary) + "】\n\n")
        except:
            pass
    return results

利用xpath方法提取出文档中的标题,地址,将要概述

3.6数据存储(保存为txt文档)
def FileSave(results):
    if not os.path.exists(save_path):  # 判断文件路径是否存在,若不在,则创建
        os.mkdir(save_path)
    path = save_path + os.path.sep + filename + ".txt"
    with open(path, 'a+', encoding='utf-8') as fp:
        for i in results:
            fp.write("%s\n" % (i))

最后,附上完整的代码

# -*- coding: utf-8 -*-
from selenium import webdriver
from lxml import etree
import os
import time

# 全局配置
save_path = 'D:\\桌面'  # 文件路径
filename = "结果集"

# 保存为TXT文档
def FileSave(results):
    if not os.path.exists(save_path):  # 判断文件路径是否存在,若不在,则创建
        os.mkdir(save_path)
    path = save_path + os.path.sep + filename + ".txt"
    with open(path, 'a+', encoding='utf-8') as fp:
        for i in results:
            fp.write("%s\n" % (i))
# 一级页面爬取
def Page_Level(myPage):  # 一级页面
    dom = etree.HTML(myPage)
    results = []
    channel_names = dom.xpath('//*[@id="content_left"]/div')
    for channel in channel_names:
        try:
            summary = channel.xpath('div[@class="c-abstract"]/text()')
            title_link = channel.xpath('div[@class="f13"]/div[1]/@data-tools')
            print(title_link[0])
            results.append("【" + title_link[0] + "\n" + str(summary) + "】\n\n")
        except:
            pass
    return results
# 爬虫
def spider(myPage):
    results = Page_Level(myPage)  # 解析
    FileSave(results)#存储
# 运行
if __name__ == "__main__":
    key_world = input("请输入您想要搜索的内容:")
    num = int(input("请输入您想要爬取的页数:"))
    filename = input("请输入您想要存储的文件名:")
    urls = []  # 页码索引列表
    for i in range(num):
        url = "https://www.baidu.com/s?wd=" + key_world + "&pn=" + str(
            i * 10) + "&oq=" + key_world + "&ie=utf-8&rsv_pq=da6a000c0001b80d&rsv_t=d7f5m3K7D2ij87xFqs1%2FBxTHWIIxqW6xVfayx6TdZRvpTSctGF1ObM1gLKs"
        urls.append(url)

    driver = webdriver.Firefox()
    for u in urls:
        driver.get(u)
        myPage = driver.page_source  # 获取源码
        spider(myPage)![在这里插入图片描述](https://img-blog.csdnimg.cn/20200328164036160.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQ0NjI1MDgw,size_16,color_FFFFFF,t_70)
        time.sleep(2)
    driver.quit()

最终的效果如图


更多爬虫实例,可前往本人码云仓库
https://gitee.com/lk0423/spider

很多时候,我们想要百度一个内容,却往往难以获得有用的信息,这时便需要进行必要的筛选,若是每次都点进连接中去查看,未免太过费时间,这里将利用python爬虫快速下载百度搜索的各条数据。1下面的代码
见任何事情,第一件要做的事情都是搜索搜索心法1、找什么?准确描述搜索目标,纠正搜索思维。比如临时要办一个读书讲座没有头绪,就可以搜搜“樊登读书会”,在里面找到流程、适合举办的时间地点等,然后快速联系
本文的文字及图片来源于网络,仅供学习、交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理本文章来自腾讯云作者:python学习教程想要学习Python?有问题得不到第一时间
一、分析网页网站的页面是JavaScript渲染而成的,我们所看到的内容都是网页加载后又执行了JavaScript代码之后才呈现出来的,因此这些数据并不存在于原始HTML代码中,而requests仅仅
录前言项目目标项目准备反爬措施项目实现效果展示小结前言现在在疫情阶段,想找一份不错的工作变得更为困难,很多人会选择去网上看招聘信息。可是招聘信息有一些是错综复杂的。而且不能把全部的信息全部罗列出来,
目录一、基本使用二、查找节点21查找单个节点22查找多个节点三、节点交互四、动作链五、执行JavaScript代码六、获取节点信息七、管理Cookies八、改变节点属性的值一、基本使用selenium
hello,小伙伴们,大家好,今天给大家分享的开源项目是:requests_html库,熟悉python的小伙伴应该使用过requests库,requests库的作者kennethreitz又设计出一
python书籍信息爬虫示例,供大家参考,具体内容如下背景说明需要收集一些书籍信息,以豆瓣书籍条目作为源,得到一些有效书籍信息,并保存到本地数据库。获取书籍分类标签具体可参考这个链接:https:/
一、网络爬虫的基本知识网络爬虫通过遍历互联网络,把网络中的相关网页全部抓取过来,这体现了爬的概念。爬虫如何遍历网络呢,互联网可以看做是一张大图,每个页面看做其中的一个节点,页面的连接看做是有向边。图
天主要是来说一下怎么可视化来监控爬虫的状态。相信大家在跑爬虫的过程中,也会好奇自己养的爬虫一分钟可以爬多少页面,多大的数据量,当然查询的方式多种多样。今天我来讲一种可视化的方法。关于爬虫数据在m