有勇气的牛排博客

python网页解析 robots文件说明

有勇气的牛排 236 Python 2023-05-18 20:25:39

文章目录

1 robots.txt 文件

User-agent:是用来指定搜索引擎的,一般写 *
Disallow:禁止抓取,不允许被收录。
Allow:允许抓取,可以被收录。
Sitemap:用来告诉搜索引擎抓取我们网站的网站地图Sitemap.xml文件的位置。
Crawl-delay

User-agent: * Disallow: /login Disallow: /register Allow: /index Allow: /article/* Sitemap: https://www.***.com/sitemap_index.xml

1 BeautifulSoup 解析的方式

xml: 速度快、唯一支持 XML 的解析器需要安装 C 语言库
lxml: 速度快、文档容错能力强需要安装 C 语言库
html.parse: Python 的内置标准库、执行速度适中 、文档容错能力强 Python 2.7.3 or 3.2.2) 前的版本中文容错能力差
html5lib: 最好的容错性、以浏览器的方式解析文档、生成 HTML5 格式的文档速度慢、不依赖外部扩展

1.1 lxml:

import requests from bs4 import BeautifulSoup url = 'https://www.115z.com/html/17556.html' headers = { 'User-Agent': 'Mozilla/5.0 (Linux; Android 6.0; Nexus 5 Build/MRA58N) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.130 Mobile Safari/537.36' } res = requests.get(url, headers=headers).content soup = BeautifulSoup(res, 'lxml') # 获取body里面的内容 print(soup.body) # 获取 a标签里面的 href值 img = soup.select('.external') print(img) for i in img: print(i['href']) # 获取所有p标签内容 text = soup.find_all('p') print(text) for i in text: print(i.text)

1.2 获取script里面的内容 通过etree

爬取的内容:
在这里插入图片描述
结果:
在这里插入图片描述
代码:

import requests from lxml import etree url = 'https://************************' response = requests.get(url).text html = etree.HTML(response) # 通过etree的xpath来锁定指定的script result = html.xpath('//script[@type="application/json"]/text()') print(result)

1.3 html.parser:

import requests from bs4 import BeautifulSoup # url = 'http://www.mianhuatang.cc/96/96827/' url = 'https://www.115z.com/list/5.html' headers = { 'user-agent': 'Mozilla/5.0 (Linux; Android 6.0; Nexus 5 Build/MRA58N) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.130 Mobile Safari/537.36' } res = requests.get(url, headers=headers).content print(res) # 初始化,实例化一个BeautifulSoup对象 soup = BeautifulSoup(res, 'html.parser') # 标题 print(soup.title) # 读取body print(soup.body) # print(soup.title.parent) print(soup.title.parent.parent) print(soup.title.name) # 输出: title print(soup.title.parent.name) # 输出: head # 输出 p 标签:好像是随机的 print(soup.p) # 输出: <p>Copyright © XXXXXXXX</p> # 查询标签 输出字典 print(soup.find_all('a')) print(soup.find_all('a')[0]) # 查询所有a标签里面的 href 值 for link in soup.find_all('a'): print(link.get('href')) # # 获取整个网页 print(soup.getText)

参考地址:
https://juejin.cn/post/6960837848522031112


留言

专栏
文章
加入群聊