【python爬虫】python爬虫笔记之requests,rebots.txt,bs4

robot.txt:

门户网站使用类似robot.txt规定哪些数据能爬,哪些不能爬

  • 常用请求头信息: User-Agent: 请求载体的身份标识 Connection:请求完毕后是断开还是继续保持连接
  • 常用响应头信息: Content-Type:服务端响应回客户端的数据类型

requests模块:

  • UA检测:门户网站经常检查请求的载体身份标识 第一种反爬取机制:User-Agent (请求载体的身份标识) 进行UA伪装
  • json.dump用法:将json流打印给文件
1
2
3
4
5
6
response = requests.post(url=post_url,data=data,headers=headers)
dic_obj = response.json()
file_name ="./"+ kw +".json"
fp = open(file_name,'w',encoding='utf-8')
# ensure_ascii参数:用来指定是否进行转义,设置false则说明进行转义
json.dump(dic_obj,fp,ensure_ascii=False

​ ensure_ascii参数:用来指定是否进行转义,设置false则说明进行转义

  • response.content用来存储二进制数据

session存储cookie

1
2
session = requests.Session()
session.post(headers=headers,url=url)

bs4 :

  • 初始化 soup = BeautifulSoup(‘html文件’,’lxml’)
  • find 返回第一个符合条件的标签 soup.find(‘div’,class_/id/attr=’song’) 返回所有符合条件的标签 soup.findall(‘div’,class_/id/attr=’song’)
  • select soup.select(‘css选择器’) soup.select(‘css层级选择器’) 如soup.select(‘.tang >ul >li >a’)
  • 获得所有标签中的所有文本 soup.a.text/string/get_text() 其中text,get_text()可以获得所有的文本内容,即使该文本并非直系 而string只能获取直系的内容
  • 获取标签中的属性值 soup.a[‘href’]