
爬虫的工作流程:
使用requests库:
导入库:
请求类型:
get请求:
post请求:
UA伪装:
有的网站有反爬机制,这时候就要模拟成正常客户端的请求去访问。 添加请求头:UA伪装:
修改编码格式:
爬取数据时,如果返回的是乱码,则要修改编码格式
查看是否请求成功:
返回200为成功,非200则请求失败。
常用解析库:
导入库:
\. 匹配点字符函数 | 说明 |
|---|---|
re.match( ) | 从字符串的起始位置匹配, 匹配成功, 返回一个匹配的对象, 否则返回None |
re.match( ) | 扫描整个字符串并返回第一个成功的匹配 |
re.findall( ) | 在字符串中找到正则表达式所匹配的所有子串, 并返回一个列表, 如果没有找到匹配的, 则返回空列表 |
re.split( ) | 将一个字符串按照正则表达式匹配结果进行分割, 返回列表类型 |
re.finditer( ) | 在字符串中找到正则表达式所匹配的所有子串, 并把它们作为一个迭代器返回 |
re.sub( ) | 把字符串中所有匹配正则表达式的地方替换成新的字符串 |
re.complie( ) | 将正则表达式传入, 返回一个匹配对象, 一般与其他方法组合使用 |
转成BeautifulSoup对象
find_all()函数find_all() 方法用于查找文档中所有匹配的标签。它会返回一个包含所有匹配项的列表。参数 : find_all(name, attrs, recursive, string, **kwargs)
name:要查找的标签名。attrs:一个字典,用于指定要查找的标签的属性。recursive:是否递归搜索子标签。默认为 True。string:要查找的文本内容。**kwargs:其他关键字参数,如 class_(注意有一个下划线)用于查找具有特定类的标签。find() 方法与 find_all() 类似,但它只返回第一个匹配的标签(而不是一个列表)。如果没有找到匹配的标签,则返回 None。用法:
find_all() 相同,但返回单个结果或 None。查找第一个<p>标签
soup.find('p')查找所有<p>标签
soup.find_all('p') 查找ID为'my-id'的元素
soup.find(id='my-id') 注意:类名作为参数时要使用'class_',因为class是Python的关键字
soup.find_all(class_='my-class')方法使用CSS选择器来定位元素。
查找所有<p>标签
soup.select('p') 查找ID为'my-id'的元素
soup.select('#my-id') 查找所有类名为'my-class'的元素
soup.select('.my-class') 查找所有类名为'my-class'的<p>标签
soup.select('p.my-class') 查找所有<div>标签下的直接子元素<p>
soup.select('div > p') 查找所有具有href属性的<a>标签
soup.select('a[href]') 查找href属性以'http://example.com'开头的<a>标签
soup.select('a[href^="http://example.com"]') 导入xpath库:
import xpath
常用参数:
" / " | 从根节点的所有节点 |
|---|---|
" // " | 从匹配选择的当前节点选择文档中的节点,不考虑他们的位置(取子孙节点) |
" . " | 选取当前节点 |
" .. " | 选取当前节点的父节点 |
" @ " | 选取属性 |
" * " | 匹配任意节点 |
" /text () " | 获取Element对象的元素内容( 文本 ) |
" /@ " | 获取标签中的属性名的内容 |
" [ ] " | 筛选符合条件的节点 |
1. 选择所有节点: 使用双斜杠//选择文档中的所有节点,如://node() 2. 按属性选择节点: 使用方括号[]和@符号选择具有特定属性值的节点,例如://book[@category="children"] 3. 使用逻辑运算符选择节点: 使用and、or、not等逻辑运算符选择节点,例如://book[price<10 and @category="children"]
# 导入xpath库
import xpath
# 解析XML字符串
html = ertee.HYML(ret .text)
# xxx为解析式
xp = html .xpath("xxx")
print(xp)原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。