当前位置: 首页 > news >正文

爬虫

robots.txt

案例:https://www.baidu.com/robots.txt
robots.txt 文件是一个放置在网站根目录的文本文件,用于告诉搜索引擎的爬虫哪些页面或目录可以或不可以被爬取。

# 表示以下规则适用于哪些爬虫。
User-agent: *
# 禁止爬取该目录下的页面。
Disallow: /tmp/
# 允许爬取该目录下的页面。
Allow: /

requests

requests 官方文档:https://requests.readthedocs.io/projects/cn/zh-cn/latest/

import requests
r = requests.get("http://www.baidu.com/s", params={"wd": "python"})
r = requests.post("http://www.baidu.com/s", data={"wd": "python"})
r = requests.get("http://www.baidu.com",headers={"User-Agent":"MyClient"})
print(r.content)# 二进制
print(r.text)# 源码
print(r.json()["data"])# json
print(r.url)
print(r.headers)
print(r.cookies)

会话对象

会话对象让你能够跨请求保持某些参数。

import requests
s = requests.Session()
# 通过为会话对象的属性提供数据,实现为请求方法提供缺省数据
s.auth = ('user', 'pass')
# 方法层的参数(url 后面)会覆盖会话的参数,但是不会被跨请求保持。
r = s.get('http://httpbin.org/cookies', cookies={'from-my': 'browser'})
r = s.get('http://httpbin.org/cookies')

前后文会话管理器
确保 with 区块退出后会话能被关闭,即使发生了异常也一样。

with requests.Session() as s:s.get('http://httpbin.org/cookies')

SSL 证书验证

将 verify(默认为True) 设置为 False,Requests 也能忽略对 SSL 证书的验证。

requests.get('https://kennethreitz.org', verify=False)

代理

import requests
# http
proxies = {"http": "http://10.10.1.10:3128","https": "http://10.10.1.10:1080",
}
# Basic Auth
proxies = {"http": "http://user:pass@10.10.1.10:3128/",
}
# SOCKS
proxies = {'http': 'socks5://user:pass@host:port','https': 'socks5://user:pass@host:port'
}
requests.get("http://example.org", proxies=proxies)

页面解析

Beautiful Soup

中文文档:https://beautifulsoup.cn/
Beautiful Soup 是一个可以从HTML或XML文件中提取数据的Python库。
通过 CSS 选择器定位

from bs4 import BeautifulSoupr = requests.get('https://www.baidu.com')
soup = BeautifulSoup(r.text,'lxml')
content = soup.select('#id > div font')

XPath

XPath 是一门在 XML 文档中查找信息的语言。XPath 可用来在 XML 文档中对元素和属性进行遍历。
教程:https://www.w3school.com.cn/xpath/index.asp

表达式描述
nodename选取此节点的所有子节点。
/从根节点选取。
//从匹配选择的当前节点选择文档中的节点,而不考虑它们的位置。
.选取当前节点。
选取当前节点的父节点。
@选取属性。
from lxml import etreehtml = requests.get('https://www.baidu.com')
soup = etree.HTML(html.text)
content = soup.xpath('//a/@href')

正则


http://www.mrgr.cn/news/25522.html

相关文章:

  • 再谈c++模板
  • VRAY云渲染动画怎么都是图片?
  • 9月12日的学习
  • Python中如何实现列表的排序
  • strcpy 函数及其缺点
  • 【F的领地】项目拆解:小学教辅资料
  • javascript如何打印九九乘法表
  • Leetcode面试经典150题-82.删除排序链表中的重复元素II
  • 59 - I. 滑动窗口的最大值
  • Linux 三种方式查看和设置主机名
  • OpenStack创建快照原理
  • JMM 指令重排 volatile happens-before
  • shader 案例学习笔记之偏移
  • 【时时三省】c语言例题----华为机试题<进制转换>
  • Java11环境安装(Windows)
  • 学习Vue3的第五天
  • 使用dnSpy调试服务端IIS部署的WebService的程序集
  • Java重修笔记 第五十四天 坦克大战(四)多线程基础
  • 大模型微调 - 用PEFT来配置和应用 LoRA 微调
  • C语言初识编译和链接