想学一下怎样用python爬取百度搜索页面,因为是第一次接触爬虫,遇到一些问题,把解决过程与大家分享一下

1.使用requests爬取网页

首先爬取百度主页www.baidu.com

import requests

url = "http://www.baidu.com"

html = requests.get(url)

print(html.text)

很简单,调用get函数,传入url,就能提取出页面元素

但打印出来发现百度主页上的中文全部成了乱码,这是因为爬来的数据中没有指定编码格式,编码默认设置为ISO-8891-1,加入一行代码指定编码格式可以解决:

import requests

url = "http://www.baidu.com"

html = requests.get(url)

html.encoding = html.apparent_encoding

print(html.text)

人为指定html.encoding = "utf-8"也能解决中文乱码问题

2.

百度搜索页面的url格式为"http://www.baidu.com/s?"与"wd=搜索关键词"、"pn=从第几个搜索项开始"等片段拼接起来的,不同片段间用&隔开,其中pn从0开始计数,一页有10个搜索项,所以从第n页开始搜索,pn应填为页数*10

如搜索CSDN,从第5个搜索项开始,url为"http://www.baidu.com/s?wd=CSDN&pn=4"

上面几行代码能爬到百度主页,但爬不到百度的搜索页面,因为没有对请求头进行设置,User-Agent默认为Python,被屏蔽了

需要在requests.get()的时候将字典类型、包含"User-Agent"的headers传入

火狐浏览器的UA查看方法:打开百度搜索页面,右键 -> “检查元素” -> 点进“网络”标签 -> 右上角那一排里选择只查看"HTML" -> 点击一个"GET"到的文件 -> 右边拖到最下面,就是User-Agent

注意这里显示的UA可能省略了一部分,双击展开才能复制全

3.

我在网上找到的文章,很多到上面这一步就结束了解决问题了,但我自己试的时候仍然是“网速不给力”,或者虽然获得的内容多了一些,但是说“网络不存在,请检查网址是否正确”

经过尝试,发现需要在headers里面再加一项,就是查看UA那里,把Accept项也加到请求头里,就能解决

我还遇到过url里面只要pn大于0就爬不到数据,也是因为请求头没有填写完全的缘故

实际上,建议你在填写请求头的时候,干脆直接把你浏览器中的每一项都填进去,毕竟你的浏览器用这个请求头能够正常打开网页,你在代码里也用这个请求头多半是没有问题的

import requests

request_headers = {

"accept":"...",

"user-agent":"...",

"accept-encoding":"...",

"accept-language":"...",

"connection":"...",

"cookie":"...",

"host":"...",

"upgrade-insecure-requests":"..."

}

url = "http://www.baidu.com"

html = requests.get(url, headers=request_headers)

html.encoding = html.apparent_encoding

print(html.text)

网上的很多教程,只填了UA就完事了,实在是很误导人,我以为问题出在代码的其他部分,浪费了很多时间

原文链接:https://blog.csdn.net/sinat_26472165/article/details/105031970

python爬取百度搜索_使用Python + requests爬取百度搜索页面相关推荐

  1. python爬虫爬网站数据登录_使用webdriver+urllib爬取网页数据(模拟登陆,过验证码)...

    urilib是python的标准库,当我们使用Python爬取网页数据时,往往用的是urllib模块,通过调用urllib模块的urlopen(url)方法返回网页对象,并使用read()方法获得ur ...

  2. python 开发安卓应用商店_用Python爬取各Android市场应用下载量(3分钟学会)

    就是这么简单! 文章目录 前言 设计一个函数 构造要爬取的网址 确定要爬取的内容的位置 构建输入和调用部分 程序完整代码 0 前言 有时候,总有一些重复又琐碎的工作,却不得不做-- 一个个统计,也不是 ...

  3. 基于python的排课表系统_利用python爬取广西科技大学教务管理信息系统班级课表...

    操作环境 python 3.6.1 pycharm 5.0.3 WampServer 3.0.6 windows 8(64位) 特点 1.中途退出程序或者断网之后重连再次运行不会抓取到重复的课程表 2 ...

  4. python如何爬取sci论文_利用python爬取并翻译GEO数据库

    GEO数据库是NCBI创建并维护的基因表达数据库,始于2000年,收录了世界各国研究机构提交的高通量基因表达数据,现芯片集数据量高达12万以上.想要从这里面挖掘(bai piao)数据,发个sci提前 ...

  5. python爬贴吧回复_通过python爬取贴吧数据并保存为word

    前言 Python是一种跨平台的计算机程序设计语言.是一种面向对象的动态类型语言,最初被设计用于编写自动化脚本(shell),随着版本的不断更新和语言新功能的添加,越来越多被用于独立的.大型项目的开发 ...

  6. python爬去朋友圈_利用Python爬取朋友圈数据,爬到你开始怀疑人生

    人生最难的事是自我认知,用Python爬取朋友圈数据,让我们重新审视自己,审视我们周围的圈子. 文:朱元禄(@数据分析-jacky) 哲学的两大问题:1.我是谁?2.我们从哪里来? 本文 jacky试 ...

  7. python爬取行业数据_用Python进行Web爬取数据

    介绍 我们拥有的数据太少,无法建立机器学习模型.我们需要更多数据! 如果这句话听起来很熟悉,那么你并不孤单!希望获得更多数据来训练我们的机器学习模型是一个一直困扰人们的问题.我们无法在数据科学项目中获 ...

  8. 用python爬取考研信息网_用Python爬取了考研吧1000条帖子,原来他们都在讨论这些!...

    写在前面 考研在即,想多了解考研er的想法,就是去找学长学姐或者去网上搜索,贴吧就是一个好地方.而借助强大的工具可以快速从网络鱼龙混杂的信息中得到有价值的信息.虽然网上有很多爬取百度贴吧的教程和例子, ...

  9. python爬取qq数据_用Python爬取QQ好友空间说说进行分析

    前言: 本文涉及知识点有数据库的读写,python基础,浏览器开发者工具的使用,适用于有编程基础,了解过python的朋友阅读. 环境:PyCharm+Chrome+MongoDB Window10 ...

最新文章

  1. 华为软件测试工程师与普通软件工程师的区别
  2. Python中lambda表达式学习
  3. HDU 2157 How many ways?? 矩阵
  4. vc 显示非模态对话框
  5. UML图系列——用例图
  6. Azure 静态 web 应用集成 Azure 函数 API
  7. rfcv函数实现_JAVA_用_JCO连接_SAP,实现调用SAP_的_RFC_函数(整理)(附一篇看起来比较全面的说明)(JCO报错信息)...
  8. android企业手机安全软件开发,基于Android的手机安全管理软件的设计与实现毕业论文.doc...
  9. 集成电路总设计(Ⅴ)
  10. 如何获取Android手机连接当前网络的外网IP
  11. Push rejected: Push master to origin/master was rejected by remote
  12. MDCC 2016参会总结
  13. 题目54:小明的存钱计划
  14. 06-SparkSQL
  15. mantis 重启mysql_机器突然重启导致Mantis错误
  16. 一名游戏制作人的设计感悟
  17. Kali linux2020.4下载与安装教程(超级详细)
  18. CPU核数和线程数有什么作用?CPU核数和线程的关系与区别,服务器CPU与电脑主机CPU的区别
  19. 清华大学教授AI领域创业,能否打破中美印三足鼎立僵局?
  20. SAP 模块中文解释

热门文章

  1. light-4j真的比springboot快44倍吗?
  2. 【转】我是这样对待曾经背叛我的女人的!
  3. 搭建在线LaTeX编辑器Overleaf
  4. WAF防火墙是什么呢
  5. 生死看淡,不服就干。SQL常见的一些优化。
  6. PySpark | SparkSQL入门 | DataFrame入门
  7. QT:模仿腾讯会议(低配版)
  8. 怎么提高图片分辨率?如何改变图片的分辨率?
  9. 安卓小游戏:小板弹球
  10. kettle使用 - 关闭Carte服务