百度首页爬取

提供我的爬取页面的思路,不一定是正确的但是我都是按照这个思路走的

第一步(页面分析)

可以看到页面非常简单

那么我们的需求就是 首先 构造url 然后观察我们想要爬取的对象

我们的需求是:爬取 新闻 hao123 这些的 文字 以及点击以后要跳转的页面的url

首先构造百度的url
直接复制urlurl = ('https://www.baidu.com/')

然后使用F12开发工具 查看 新闻这些标题的 位置 以及会跳转的url的位置在什么地方

​​​​​​​

这里我们还需要查看 网页的编码方式和是POST方法还是GET方法

如图片所示 圈出的部分是新闻 的文本以及跳转的Url所在的位置  以及 使用的是什么编码方式和get方法

我们可以使用 xpath 正则表达式 以及BeautifiSoup 进行定位元素 然后 使用get方法获取元素

那么我们就可以开始写程序 已经分析完页面了

第二步(代码的编写)

在上面我们以及分析完页面以后 我选择使用xpath方法来定位元素 接下来导入库

import requests
from lxml import etree

这里有一个问题会出现 就是 我们初学的时候 设置headers 就只设置一个User-Agent

但是我们在爬取一些网站的时候 他需要的头文件不只这些 网站会设置反爬  如果我们不伪装的像一点 就会被识别 爬虫就会失效

那么在我们爬取网站的时候 可以多使用一点头文件 如图

这些文件我们都可以使用 用来伪装我们的爬虫程序 代码如下

headers = {'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.71 Safari/537.36 Edg/97.0.1072.55','Accept':'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8','Accept-Encoding':'gzip, deflate, br','Accept-Language':'zh-CN,zh;q=0.9'
}

接下来就是定义请求头 然后设置编码格式

req = requests.get(url=url,headers=headers)
content = req.content.decode('utf-8')

接下来就是 使用xpath语法 去定位元素

在使用xpath语法的时候  我们需要在页面观察定位的元素在什么地方

首先找到 id唯一命名  然后 定位到以后 判断 一个是在href元素中  一个是a标签的文本当中

如下图以及代码

get = etree.HTML(content)
geturl = get.xpath('//div[@id="s-top-left"]/a/@href')
getname = get.xpath('//div[@id="s-top-left"]/a/text()')

运行完以后 查看是否能成功爬出想要的东西  可以print 一下 geturl 和 getname 查看是否爬取成功

接下来就相当于一个总和的步骤  爬取完以后我们需要把爬取的数据放到一起

要用到 zip函数

zip函数 相当于 可以拼接数据  一个geturl对应一个getname  让我们更清楚的看出来 一个名字然后他跳转的Url是多少

这里需要用到字典 来存放数据 代码如下:

works=[]
for urls,names in zip(geturl,getname):work={"url":urls,"name":names}works.append(work)
print(works)

第三步(检查错误 优化代码)

在写这个代码的时候 我一开始用的不是zip  我直接写了一个for就写完了  这个zip方法是我后来改的

给大家多提供几种写法 源码如下  下面这个我是直接用for方法  与 xpath结合  如果刚刚入门xpath语法的小伙伴 可以看一看 使用zip的方法  下面的这个 是结合起来 可能稍微难一点

# get = etree.HTML(content)
# works=[]
# select = get.xpath('//div[@id="s-top-left"]/a')
# for selects in select:
#     geturl=selects.xpath('./@href')
#     urlname = selects.xpath('./text()')
#     work={
#         "url":geturl,
#         "name":urlname
#     }
#     works.append(work)
# print(works)

最后附上源码

import requests
from lxml import etreeurl = ('https://www.baidu.com/')headers = {'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.71 Safari/537.36 Edg/97.0.1072.55','Accept':'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8','Accept-Encoding':'gzip, deflate, br','Accept-Language':'zh-CN,zh;q=0.9'
}req = requests.get(url=url,headers=headers)
content = req.content.decode('utf-8')get = etree.HTML(content)
geturl = get.xpath('//div[@id="s-top-left"]/a/@href')
getname = get.xpath('//div[@id="s-top-left"]/a/text()')
works=[]
for urls,names in zip(geturl,getname):work={"url":urls,"name":names}works.append(work)
print(works)

爬虫实战(1)————百度首页爬取相关推荐

  1. python爬虫实战之百度新闻爬取

    百度新闻信息爬取 目录 百度新闻信息爬取 序言 获取在百度新闻中搜索"阿里巴巴"的网页源代码 编写正则表达式提取新闻信息 数据清洗并打印输出 实战完整代码 序言  通过对百度新闻标 ...

  2. Python爬虫实战系列(一)-request爬取网站资源

    Python爬虫实战系列(一)-request爬取网站资源 python爬虫实战系列第一期 文章目录 Python爬虫实战系列(一)-request爬取网站资源 前言 一.request库是什么? 二 ...

  3. Python 爬虫实战,模拟登陆爬取数据

    Python 爬虫实战,模拟登陆爬取数据 从0记录爬取某网站上的资源连接: 模拟登陆 爬取数据 保存到本地 结果演示: 源网站展示: 爬到的本地文件展示: 环境准备: python环境安装 略 安装r ...

  4. 初探Scrapy爬虫框架之百度网页爬取

    初探Scrapy爬虫框架之百度网页爬取 scrapy框架及百度网页爬取与保存 一.scrapy框架简介 二.自己初使用的心得体会 1.爬虫之前明确目标 2.scrapy框架的简单使用流程 3.scra ...

  5. python爬虫实战(一)--爬取知乎话题图片

    原文链接python爬虫实战(一)–爬取知乎话题图片 前言 在学习了python基础之后,该尝试用python做一些有趣的事情了–爬虫. 知识准备: 1.python基础知识 2.urllib库使用 ...

  6. Python爬虫实战之一 - 基于Requests爬取拉勾网招聘信息,并保存至本地csv文件

    Python爬虫实战之二 - 基于Requests抓取拉勾网招聘信息 ---------------readme--------------- 简介:本人产品汪一枚,Python自学数月,对于小白,本 ...

  7. 爬虫实战(二) 用Python爬取网易云歌单

    最近,博主喜欢上了听歌,但是又苦于找不到好音乐,于是就打算到网易云的歌单中逛逛 本着 "用技术改变生活" 的想法,于是便想着写一个爬虫爬取网易云的歌单,并按播放量自动进行排序 这篇 ...

  8. 用python 爬取百度百科内容-爬虫实战(一) 用Python爬取百度百科

    最近博主遇到这样一个需求:当用户输入一个词语时,返回这个词语的解释 我的第一个想法是做一个数据库,把常用的词语和词语的解释放到数据库里面,当用户查询时直接读取数据库结果 但是自己又没有心思做这样一个数 ...

  9. 爬虫实战——绝对通俗易懂,爬取房产数据

    爬取房产数据 爬虫介绍 实战目标 1.获取url 2.利用BeautifulSoup获取html的索引 3.查找所需数据索引 4.正则表达式获取所需要的信息 完整代码 爬虫介绍 简单介绍一下爬虫,百度 ...

最新文章

  1. 中常用的数据结构_C语言实现常用数据结构:基本概念(第0篇
  2. SQL中JOIN 的用法
  3. 前端趋势榜:上周最实用和 yyds 的 10 大前端项目 - 211128
  4. 1231 sqlserver_sqlserver 删除表中 指定字符串
  5. vb计算机水平考试笔试,全国计算机等级考试VB二级笔试复习资料-20210522014715.docx-原创力文档...
  6. 树莓派GPIO口的使用(外设相关开发WringPi库的使用,超声波、继电器)
  7. 每天一个Linux命令-ls
  8. nacos 公共_技术分享——使用nacos作注册中心和配置中心
  9. 被高估了的测试驱动开发?
  10. Java ME游戏编程_Java ME游戏编程(第2版)
  11. 光缆成端接头的含义是指
  12. 中兴通讯有限公司 招聘“dotnet 高级工程师”
  13. Deepin20.5安装maven
  14. 总纲-信息、网络等级保护测评机构 、名单-等保测评机构目录-等保测评公司推荐目录
  15. 微信视频号迅速突破“快抖”封锁 ,换挡提速!
  16. Java Web前后端分离项目—后端servlet实例
  17. 抽象数据类型Polynomial 的实现(第二章 P40-43 算法2.22,2.23)
  18. 2020年全球EDA软件行业市场竞争格局分析 三巨头三足鼎立
  19. 严格递增最大连续子段(思维)
  20. 快手大数据架构师:实时OLAP分析平台这么做,才可能超越抖音

热门文章

  1. 达芬奇密码与斐波那契数列
  2. Cisco® Catalyst® 8000V 边缘软件 (Catalyst 8000V) 17.11.1a 发布 - 虚拟路由器
  3. Python实现经典机器学习案例——良/恶性性乳腺癌肿瘤完整数据预测
  4. 党旗飘飘平台正确打开方法 | JS定时点击按钮
  5. html页面获取宽和高
  6. 冒着得罪“技术大V”的风险,曝光他的搞钱套路!
  7. TCP拥塞控制和PID控制器
  8. 新概念英语2课后题答案
  9. 谷歌眼镜开发Mirror API之PHP开发
  10. 最新《PHP程序员就业指导-新手怎么打造PHP程序员简历》