Python爬取百度搜索结果(标题,摘要,链接)

2023-05-16

近期想要爬取百度搜索的结果,网上的教程一直没有找到可以直接用的,尝试了几个小时终于摸索出了可以用的代码。

主要的问题在于 url 的形式,之前的教程一般是这种形式:

url = 'https://www.baidu.com/s?' + word + '&pn=0' # word为搜索关键词,pn用来分页

由于百度每个页面显示10条结果,'&pn=n' 表示第 n 条结果,n = 0~9 表示第一页,n = 10~19 表示第二页,以此类推。然而在运行代码时发现这种形式的 url 从第二页开始就无法正常爬取了。关于 url 格式我一直没有搞清楚,但是我摸索出了一种方法能得到可用的 url;

首先按照上面那个 url 形式,比如要搜索“咖啡”,则将 'word' 改为 "咖啡": https://www.baidu.com/s?咖啡&pn=0 并复制到浏览器, 如下图,这是搜索“咖啡”以后的第一页:

 

然后点击下方页码,打开第二页: 

 

下图为搜索“咖啡”结果的第二页,可以看到上方 url 地址出现 '&pn=10';

 

复制此地址作为我们的搜索 url,形式如下(复制以后中文“咖啡”两字被自动编码了):

url = 'https://www.baidu.com/s?wd=%E5%92%96%E5%95%A1&pn='+ number +'&oq=%E5%92%96%E5%95%A1&ie=utf-8&usm=1&rsv_pq=9ccd7f6500120ebb&rsv_t=d92fDeHr8TAXzN%2FuqzNW3xd3BcU3lunThKY2lkUUobFc3Ihjx46MPW4iNbc'

以下是全部代码:

import time
from bs4 import BeautifulSoup    #处理抓到的页面
import sys
import requests
import re
import importlib
importlib.reload(sys)#编码转换,python3默认utf-8,一般不用加

 

#ff = open('test.txt', 'w')

headers = {
    'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',
    'Accept-Encoding': 'gzip, deflate, compress',
    'Accept-Language': 'en-us;q=0.5,en;q=0.3',
    'Cache-Control': 'max-age=0',
    'Connection': 'keep-alive',
    'User-Agent': 'Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:22.0) Gecko/20100101 Firefox/22.0'
} #定义头文件
 
def getfromBaidu():
    start = time.clock()
    for k in range(1, 3):
        geturl(k)
    end = time.clock()
    print(end-start)
 
def geturl(k):
    number = str((k - 1) * 10)
    path = 'https://www.baidu.com/s?wd=%E5%92%96%E5%95%A1&pn=' + number + '&oq=%E5%92%96%E5%95%A1&ie=utf-8&usm=1&rsv_pq=9ccd7f6500120ebb&rsv_t=d92fDeHr8TAXzN%2FuqzNW3xd3BcU3lunThKY2lkUUobFc3Ihjx46MPW4iNbc'
    #print(path)
    content = requests.get(path,headers=headers)
    #使用BeautifulSoup解析html
    soup = BeautifulSoup(content.text,'html.parser')

    tagh3 = soup.find_all('div', { 'class', 'result c-container '})
    #print(tagh3)
    for h3 in tagh3:
        try:
            title = h3.find(name = "h3", attrs = { "class": re.compile( "t")}).find('a').text.replace("\"","")
            print(title)
            #ff.write(title+'\n')
        except:
            title = ''
        try:
            abstract = h3.find(name = "div", attrs = { "class": re.compile( "c-abstract")}).text.replace("\"","")
            print(abstract)
            #ff.write(abstract+'\n')
        except:
            abstract = ''
        try:
            url = h3.find(name = "a", attrs = { "class": re.compile( "c-showurl")}).get('href')
            print(url+'\n')
            #ff.write(url+'\n')
        except:
            url = ''
  
        #ff.write('\n')
 
 
if __name__ == '__main__':
    getfromBaidu()

爬取结果如下:

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Python爬取百度搜索结果(标题,摘要,链接) 的相关文章

  • Use JsonReader.setLenient(true) to accept malformed JSON at line 1 column 4171 异常的解决方法

    在做本地json文件的解析时遇到了这个问题 原代码为 64 RequestMapping value 61 34 readJson1 34 public String readJson1 String cityJsonCode json解析
  • Visual Studio 中 Tab 转换为空格的设置

    在 Visual Studio 中写代码时 xff0c 按 Tab 键 xff0c 会自动进行缩进 有时希望实现按 Tab 键 xff0c 出现多个空格的效果 Visual Studio 提供了这样的功能 xff0c 具体设置方法为 xff
  • 剑指offer—03

    剑指 Offer 03 数组中重复的数字 找出数组中重复的数字 在一个长度为 n 的数组 nums 里的所有数字都在 0 xff5e n 1 的范围内 数组中某些数字是重复的 xff0c 但不知道有几个数字重复了 xff0c 也不知道每个数
  • JSONArray.remove(index)失败原因分析

    集合在执行remove方法的时候 xff0c 有两种执行方式 xff0c 第一种移除对象remove xff08 object xff09 xff0c 另一种根据下标移除remove xff08 intIndex xff09 错误案例 Li
  • 【批处理bat】暂停功能命令

    一 目的 对暂停功能做修改 二 功能 2 1屏蔽 pause gt nul 在原本的pause上使用右尖括号写入nul即可不显示任何内容 2 2修改 echo press anykey to continue XD 在pause前利用ech
  • AOSP的编译及刷机

    简介 众所周知 xff0c Android是开源的 xff0c AOSP xff08 Android Open Source Project xff09 为Android开源项目的缩写 作为一名Android开发 xff0c 掌握Andro
  • Linux常用命令记录(du、find、grep、hadoop/hdfs、sed、tar、tr)

    Linux常用命令 查询格式 语句1 语句2 语句3 xff1a 对语句1的输出结果进行语句2的判定 xff0c 然后对输出结果进行语句3的判定 如 xff1a cat a txt head 10 wc l 39 cat a txt 39
  • 虚拟机运行出现蓝屏的现象如何解决

    前两天给大家分享了如何在电脑上安装虚拟机 xff0c 听到有部分小朋友私信跟我反馈说 xff0c 自己本身电脑可以安装vm虚拟机但是他安装过后一运行就立马进入蓝屏修复界面 所以今天想跟大家分享一下遇见这种情况如何解决 xff08 本文以华硕
  • 小白也能学懂——子网划分(2)

    我前天讲了一下子网划分 xff0c 昨天比较忙碌就忘记写剩下的内容了 xff0c 今天吃过饭 xff0c 想给他补上 xff0c 主要还是细分一下子网划分的作用 xff0c 以及如果进行计算 xff0c 本章还不是算难 xff0c 但是计算
  • 三分钟告诉你什么是三层交换机!

    昨天上周我们讲了单臂路由和跨交换机传输 xff0c 今天想说一下三层交换机 xff0c 对了还有个小实验 xff0c 收到反馈说我每次都是在图里标注代码不够清晰 xff0c 所以接下来会在实际中把代码贴出来供大家复制使用 目录 一 三层交换
  • 链路聚合(二层链路和三层链路)

    昨天主要介绍了三层交换机 xff0c 今天顺其自然就讲到了链路聚合 xff0c 因为是交换机中一个比较重要的技术 xff0c 下面我们开始 目录 一 单臂路由和三层交换的复习 二 端口绑定技术 三 链路聚合 端口聚合 端口绑定实现的条件 四
  • 静态路由(也许是目前最全的)

    今天在公司 xff0c 新来了个实习生 xff0c 突然问道静态路由的问题 xff0c 他跟我讲他不会设置 然后我就很尴尬 xff0c 因为这个毕竟是基础知识嘛 所以今天整理了一下静态路由的知识 xff0c 跟大家分享一下 目录 一 路由器
  • C# 读取Json文件--代码示例

    1 C 读取Json文件 JsonConvert SerializeObject str object to string JsonConvert DeserializeObject obj string to json 2 Json文件创
  • 网络地址转换协议——NAT(恐怕是最全的版本)

    前天我说第二天要跟大家讲一下NAT的 xff0c 结果放假有些懒 xff0c 所以就放在今天更新 xff0c 希望大家不要凶我 xff0c 哈哈哈 目录 一 什么是NAT 1 NAT简介 2 NAT作用 3 NAT内网地址的范围 4 主要应
  • linux日志文件详解

    目录 一 日志文件的分类二 日志文件位置三 常见日志文件1 分析日志文件2 内核及系统日志 四 日志消息等级五 日志文件分析1 用户日志2 程序日志 六 日志分析注意事项 一 日志文件的分类 日志文件是用于记录Linux系统中各种运行消息的
  • 虚拟化与docker基础

    文章目录 一 虚拟化1 虚拟化概述2 虚拟化的功能3 虚拟化的三种模式4 容器与虚拟化 二 Docker1 容器概述2 Docker概述3 Docker的设计宗旨4 容器与虚拟机的区别5 容器在内核中支持两种重要的技术6 Docker核心概
  • Docker容器网络模式与数据管理

    文章目录 一 Docker容器操作1 容器创建2 查看容器的运行状态3 启动容器4 创建并开启容器5 终止容器运行6 容器的进入7 复制文件到容器中 宿主机中8 容器的导出与导入9 删除容器 二 Docker网络1 Docker网络实现原理
  • docker镜像的创建与dockerfile

    文章目录 一 docker镜像的创建1 创建镜像的方法2 基于现有镜像创建3 基于本地模板创建4 基于dockerfile创建 二 Dockerfile1 概述2 Dockerfile结构3 Dockerfile镜像结构的分层4 Docke
  • matlab中值滤波实现

    中值滤波是一种典型的非线性滤波 xff0c 是基于排序统计理论的一种能够有效抑制噪声的非线性信号处理技术 xff0c 基本思想是用像素点邻域灰度值的中值来代替该像素点的灰度值 xff0c 让周围的像素值接近真实的值从而消除孤立的噪声点 该方
  • 程序员的情人节

    今天是一个好的节日 xff0c 七夕呀 xff01 程序是最好的女朋友 xff0c 它是不会骗你的 它偶尔会发些小的情绪 只是你没有懂它

随机推荐

  • stm32-Hardfault及内存溢出的查找方法

    STM32内存结构 1 要点 1 1 两种存储类型 RAM 和 Flash RAM可读可写 xff0c 在STM32的内存结构上 xff0c RAM地址段分布 0x2000 0000 0x2000 0000 43 RAM size Flas
  • raylib部分源代码功能解读

    官网 https www raylib com https github com raysan5 raylib 我根据自己的需求裁剪了多余功能后的代码 xff1a https gitee com xd15zhn raylib https g
  • 无量纲处理、量纲变换与实时仿真理论

    基本原理 万有引力公式 d 2 r
  • 局域网windows平台下时间同步

    最近单位出现很多应为系统时间不统一造成的问题 xff0c 如 客户机时间与服务器时间不同步 xff0c 而客户机使用软件是读取本机时间上传服务器 xff0c 这样就会造成排序错误 每次开机修改很繁琐 我就想到了在局域网内假设时间服务器的想法
  • 水下潜航器的建模与控制

    线性系统理论大作业 待完成 题目 水下潜器模型 xff0c 可能是潜艇或者鱼雷等对象 一个主推进螺旋桨 xff0c 前后两对水平陀翼 xff0c 后面一对垂直陀翼 潜器前进过程中 xff0c 通过调节助推进螺旋桨推力 xff0c 以及三对陀
  • 演化博弈、复制动态方程与仿真

    本文只整理和总结一下我的理解 xff0c 文末列出了可供参考的更详细完整的资料 建议先看参考资料 1 xff08 博弈论公开课 xff09 的博弈论课程 xff0c 可以直接从第11讲开始看 参考链接 2 是关于演化博弈非常经典的一本书 参
  • 演化博弈方法用于多智能体系统最优资源分配

    演化博弈方法用于多智能体系统最优资源分配 Evolutionary game theoretic approach for optimal resource allocation in multi agent systems 论文复现见 论
  • [论文复现]演化博弈方法用于多智能体系统最优资源分配

    原文 演化博弈方法用于多智能体系统最优资源分配 CSDN博客 https ieeexplore ieee org document 8243778 问题描述 有2种资源分配给6个个体 xff0c 2种资源的总量分别为 y 1 61 545
  • 基于博弈学习的分布式卫星任务规划

    基于博弈学习的分布式卫星任务规划 Distributed Satellite Mission Planning via Learning in Games 摘要 对地观测卫星群的任务规划是一个复杂的问题 xff0c 它提出了重大的理论和技术
  • 多星分布式任务分配中的博弈自组织

    多星分布式任务分配中的博弈自组织 Game theoretic self organization in multi satellite distributed task allocation 论文复现见 论文复现 多星分布式任务分配中的博
  • 自用的矩阵运算库zhnmat使用说明

    自用的矩阵运算库zhnmat使用说明 包含两个主要类 xff1a Mat和Vector3d xff0c 可以用于一些简单的矩阵和三维向量场景 xff0c 代码较简单 xff0c 没有任何性能优化 xff0c 可用于学习参考 代码仓库 htt
  • 非线性系统的反馈线性化

    仿射非线性或非仿射非线性指对输入是否是线性的 例如 xff0c 系统能够写成 x 61 f x
  • 基于特征模型的全系数自适应控制

    摘要 xff1a 首先推导了全系数和等于1的证明过程 xff0c 分析了等效时间常数的概念 xff0c 然后推导了递推最小二乘公式并用于参数辨识的方法 xff0c 最后给几个仿真的例子 全系数之和等于1 被控对象用微分方程 y n
  • raylib一些示例代码

    摘要 xff1a 几种相机视角 3D预览图视角 xff1a 鼠标拖动 xff0c 滚轮缩放 只能沿着中心点 第一视角 xff1a WSAD分别控制视角的前后左右移动 xff0c EQ分别控制上下移动 xff0c 滚轮控制移动速度 画正方体线
  • gnome session 中的开机启动程序配置文件

    我找了很久才找到的 xff1a 管理员状态下 xff1a linux Blue home library config autostart ls gnome terminal desktop stardict desktop 我开机启动的两
  • 使用深度Q网络(Deep Q Network)学习控制倒立摆

    使用深度Q网络 Deep Q Network 学习控制单摆 原文 xff1a https qiita com ashitani items bb393e24c20e83e54577 摘要 xff1a 我们将尝试使用Deep Q网络 xff0
  • python多次调用exe文件运行不同的结果

    摘要 xff1a 有个C 43 43 项目是读取配置参数文件并打印对应的结果 xff0c 后来需要多次修改配置文件并运行 xff0c 于是想到写个python脚本执行这一过程 写一个测试项目 xff0c 项目结构如下 xff1a 根目录 m
  • Python通过SWIG调用C++时出现的ImportError问题解析

    摘要 win10系统 xff0c 编译器为mingw xff0c 按照教程封装C 43 43 的一个类并用python调用 xff0c 一步步进行直到最后一步运行python代码时 xff0c 在python代码中import exampl
  • 基于Android设备获取USB外接摄像头的图像

    目录 背景开发环境硬件软件 简介那我们开始吧导入项目布局 权限与初始化MainActivity java运行时遇到的问题 运行结果其他 背景 本人在读研期间接到的项目 xff0c 需要用一个工业内窥镜 xff08 支持USB和Type C接
  • Python爬取百度搜索结果(标题,摘要,链接)

    近期想要爬取百度搜索的结果 xff0c 网上的教程一直没有找到可以直接用的 xff0c 尝试了几个小时终于摸索出了可以用的代码 主要的问题在于 url 的形式 xff0c 之前的教程一般是这种形式 xff1a url 61 39 https