bs4解析规则|py05

持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第6天,点击查看活动详情

文章概览

  • Html语法规则
  • Bs4爬虫示例

一、Html语法规则

 html常见标签格式:<标签 属性="属性值">被标记的内容</标签>

 比如常见的标题:<h1></h1>是大标题,其中也可以添加属性比如<h1 align="center"></h1>可以让内容居中显示,center就是属性值。

二、Bs4下载及代码示例

下载Bs4

 可以使用如下命令:

pip install bs4

 如果太慢,可以通过国内镜像,比如阿里源或者清华源去下载。

pip install bs4 -i 清华源

爬取北京新发地

image.png

爬取步骤:

  • 拿到页面源代码
  • 使用bs4进行解析,拿到数据
  • 检查是否有反爬、字符集等问题,并采取对应对策

 在使用Bs4处理数据时,也有步骤:

  • 将页面源代码交给BeautifulSoup进行处理,生成bs对象。

image.png

 如果这么写,运行出来会有警告,并不影响程序运行,因为BeautifulSoup并不知道拿到的数据是不是html,它会先把他当成html处理,要解决该警告,需要加入一个参数(指定html解析器)告诉BeautifulSoup拿到的数据是html。

  • 从bs对象中查找数据

 查找有find和find_all,find找到一个就结束,find_all是找到页面中所有的。find函数的语法规则是find(标签,属性=值),后面的属性可以不写,但如果要查找的标签会匹配多个,可以用后一个标签进一步缩小范围,find_all同样。

image.png

上图class和python关键字重合,会报错,对此的解决办法是在class后添加一个"",即“class”。

也可以这样写:

image.png

 使用字典来传入参数,寻找class值为“h_table”的table。[1:]表示从第一个数据拿到最后一个数据。

import requests
from bs4 import BeautifulSoup

url = "http://www.xinfadi.com.cn/index.html"
resp = requests.get(url)
print(resp.text)

page = BeautifulSoup(resp.text,"html.parser")
table = page.find("table",attrs={"class":"h_table"})

trs = table.find_all("tr")[1:]
for tr in trs:
    tds = tr.find_all("td")
    tds[0].text

 最后将拿到的数据放到文件中。

posted @ 2022-11-14 21:06  钱有学  阅读(47)  评论(0)    收藏  举报