1.使用requests库请求网站

网页请求方式:(1)get :最常见的方式,一般用于获取或者查询资源信息,也是大多数网站使用的方式,响应速度快。

(2)post:多以表单形式上传参数,因此除了查询信息外,还可以修改信息。

2.怎么确定用什么方式请求?

(1)打开网页,用开发者模式,我的浏览器是360,图示:

(2)任意复制一条首条新闻标题,粘贴到搜索框里;

(3)开发者模式,依次点击‘network’,‘XHR’找到翻译数据,点击Headers,请求为get方式。图示:

3.使用Beautiful soup解析网页

(1)安装bs

通过requests库可以爬取到网页源码,接下来要从源码中找到并提取数据;
Beautiful soup 是python 的一个库,最主要的功能是从网页中抓取数据。
Beautiful soup 目前已经被移植到bs4库中,即导入Beautiful soup时需要先安装bs4库
bs4安装:打开cmd:python -m pip install bs4

图示:

(2)Beautiful soup 指定xlml解析器进行解析。 soup=BeautifulSoup(strhtml.text,'lxml')

(3)使用select(选择器)定位数据,使用浏览器的开发者模式,将鼠标停留在对应数据位置并右击,“审查元素“,开发者界面会有被选中部分,右击  copy  ---> copy selector;   将路径粘贴在文档中,代码如下:

#main > div > div.mtop.firstMod.clearfix > div.centerBox > ul.newsList > li:nth-child(1) > a

这是选中的第一条路径,但我们要获取所有的新闻头条,因此将:li:nth-child(1)中冒号(包含冒号)后面的删掉。如下:

#main > div > div.mtop.firstMod.clearfix > div.centerBox > ul.newsList > li > a

4.清洗和组织数据

for item in data:                    # soup匹配到的有多个数据,用for循环取出
    result = {'title': item.get_text(),     # 标签在<a>标签中,提取标签的正文用get_text()方法
        'link': item.get('href'),  # 链接在<a>标签的href中,提取标签中的href属性用get()方法,括号指定属性数据
        'ID': re.findall('\d+', item.get('href'))    # 每一篇文章的链接都有一个数字ID。可以用正则表达式提取这个ID;\d  匹配数字; + 匹配前一个字符1次或者多次
    }

5.用正则表达式提取链接数字ID。python调用正则表达式使用re库,不用安装,可直接调用。

6.完整代码如下:

"""
通过requests库可以爬取到网页源码,接下来要从源码中找到并提取数据;
Beautiful soup 是python 的一个库,最主要的功能是从网页中抓取数据。
Beautiful soup 目前已经被移植到bs4库中,即导入Beautiful soup时需要先安装bs4库
bs4安装:打开cmd:python -m pip install bs4
"""
import requests
from bs4 import BeautifulSoup
import re   # 在python中调用正则表达式用re库,这个库不用安装,可直接调用
url = 'http://www.cntour.cn/'
strhtml = requests.get(url)  # 所有在源码中的数据请求方式都是get
soup = BeautifulSoup(strhtml.text, 'lxml') # lxml解析器进行解析,解析之后的文档保存到变量soup
 #print(soup)
# 使用soup.select引用这个路径
data = soup.select('#main > div > div.mtop.firstMod.clearfix > div.centerBox > ul.newsList > li > a')
#print(data)
# 清洗和组织数据,完成上面的步骤只是获得了一段目标HTML代码,但没有把数据提取出来
for item in data:                    # soup匹配到的有多个数据,用for循环取出
    result = {'title': item.get_text(),     # 标签在<a>标签中,提取标签的正文用get_text()方法
        'link': item.get('href'),  # 链接在<a>标签的href中,提取标签中的href属性用get()方法,括号指定属性数据
        'ID': re.findall('\d+', item.get('href'))    # 每一篇文章的链接都有一个数字ID。可以用正则表达式提取这个ID;\d  匹配数字; + 匹配前一个字符1次或者多次
    }print(result)

7.结果如下:

本文是:学习《python3 爬虫,数据清洗与可视化实战 》第二章的学习笔记

python3 get爬取网页标题、链接和链接的数字ID相关推荐

  1. python爬取网页上的特定链接_python3下scrapy爬虫(第三卷:初步抓取网页内容之抓取网页里的指定数据)...

    上一卷中我们抓取了网页的所有内容,现在我们抓取下网页的图片名称以及连接 现在我再新建个爬虫文件,名称设置为crawler2 做爬虫的朋友应该知道,网页里的数据都是用文本或者块级标签包裹着的,scrap ...

  2. python爬取网页上的特定链接_python 用bs4解析网页后,如何循环打开爬取出来的网址链接?...

    请问,用beautiful soup爬取特定网页后提取tag 'a',抓取里面的网址,打开特定的网址,循环特定次数,最后打印出想要的网址,如何操作? 详细的要求如下图: 我的代码如下: import ...

  3. python爬取网页上的特定链接_自学python爬虫二:如何正常操作urllib2通过指定的URL抓取网页内容...

    所谓网页抓取, 就是把URL地址中指定的网络资源从网络流中读取出来,保存到本地. 类似于使用程序模拟IE浏览器的功能,把URL作为HTTP请求的内容发送到服务器端, 然后读取服务器端的响应资源. 在P ...

  4. python3自动爬取网页资源并保存为epub电子书

    使用Python获取网页内容并生成EPUB格式电子书 前言 EPUB的介绍 思路 代码示例 前言 现在的有很多电子书都不能下载了,只能在线看,但是广告又多.所以想编个程序抓取这些内容生成电子书. EP ...

  5. [python] 常用正则表达式爬取网页信息及分析HTML标签总结

    这篇文章主要是介绍Python爬取网页信息时,经常使用的正则表达式及方法.它是一篇总结性文章,实用性比较大,主要解决自己遇到的爬虫问题,也希望对你有所帮助~ 当然如果会Selenium基于自动化测试爬 ...

  6. python正则表达式爬取网页数据_常用正则表达式爬取网页信息及HTML分析总结

    Python爬取网页信息时,经常使用的正则表达式及方法. 1.获取 标签之间内容2.获取 超链接之间内容3.获取URL最后一个参数命名图片或传递参数4.爬取网页中所有URL链接5.爬取网页标题titl ...

  7. 常用正则表达式爬取网页信息及分析HTML标签总结

    这篇文章主要是介绍Python爬取网页信息时,经常使用的正则表达式及方法.它是一篇总结性文章,实用性比较大,主要解决自己遇到的爬虫问题,也希望对你有所帮助~ 当然如果会Selenium基于自动化测试爬 ...

  8. python 正则表达式 re 爬取网页及分析总结

    来源于此为了方便自己查找,进行了简化与整理. 本文涉及内容如下: 获取< tr>< /tr>标签之间内容 获取< a href->< /a>超链接之间内 ...

  9. 常用正则表达式爬取网页信息及HTML分析总结

    Python爬取网页信息时,经常使用的正则表达式及方法. 1.获取<tr></tr>标签之间内容 2.获取<a href..></a>超链接之间内容 3 ...

最新文章

  1. ip转数字 java_Java IP地址转换和数字相互转换算法
  2. c语言if判断正确却不进函数,C语言初学者,为什么满足if条件却不进入,求大老解惑...
  3. js代码实现购物车效果
  4. spring 监听器 IntrospectorCleanupListener简介
  5. MySQL根被拒绝_[转载]phpMyAdmin 尝试连接到 MySQL 服务器,但服务器拒绝连接。...
  6. 编辑器推荐:Visual Studio Code(VSCode/VSC)
  7. [C# 基础知识梳理系列]专题四:事件揭秘
  8. linux普通用户修改root密码及获取root权限
  9. 拉普拉斯矩阵(Laplacian Matrix) 及半正定性证明
  10. windows10 关闭欢迎界面
  11. SystemView 应用笔记
  12. mysql提现_MYSQL事务教程之Yii2.0商户提现功能
  13. springboot+vue+nodejs多用户网上图书商城系统-含卖家功能java
  14. html网页启动不了404错误,造成网页 404 错误的几大原因介绍
  15. 给linux(centos)操作系统设置主机名的几种方式
  16. 推动RISC-V拾级而上 赛昉科技发布两款高性能产品: JH7110多媒体处理器与VisionFive 2开发板
  17. Python处理音频文件的实用姿势
  18. POJ 3666 dp
  19. C语言如何实现动态数组?
  20. 【最新】2022年注册测绘师考试测绘案例分析真题及参考答案

热门文章

  1. 将输入的单词按首字母排序
  2. 计算机二级公共基础知识
  3. 手把手教你如何在广交会使用OBS直播丨汇信外贸软件
  4. gitLab数据备份和迁移
  5. 【华为OD机试真题 C++】数字涂色 【2022 Q4 | 100分】
  6. mysql语句生成,SQL语句生成器
  7. 安装常见的错误及解决方法(记录)
  8. STM32CubeMX 下载和安装 详细教程
  9. 【C++实验】类和对象(两个分数相加并且化简)
  10. LR字符串截取lr_save_var