requests和beautifulsoup笔记

一、requests库

1.引入 :import requests

2.基本get 请求:

response = requests.get('http://httpbin.org/get')
print(response.text)


带参get请求:

response = requests.get('http://httpbin.org/get?name = zhangsan & age = 20')
print(response.text)
print('============')

data = {'name':'zhangsan','age':20}
response = requests.get('http://httpbin.org/get',params= data)
print(response.text)



3.添加加headers实现了爬虫浏览器的伪装。

headers  = {'user-Agent':"Mozilla/5.0(windows NT 10.0;win64;X64)AppleWebkit/537.36(KHTML,like Gecko)chrome/70.0.3538.102 Safari/537.36"}
response = requests.get('http://httpbin.org/post',headers = headers)
print(response.text)

 

4.post请求

# post请求加上一个Headers请求
data = {'name':'zhangsan','age':22}
headers  = {'user-Agent':"Mozilla/5.0(windows NT 10.0;win64;X64)AppleWebkit/537.36(KHTML,like Gecko)chrome/70.0.3538.102 Safari/537.36"}
response = requests.post('http://httpbin.org/post',headers = headers)
print(response.json())

5.获取cookie

response = requests.get('http://www.baidu.com')
print(response.cookies)

 

二、BeautifulSoup

  1. 引入:from bs4 import BeautifulSoup
  2. BeautifulSoup库官方推荐使用lxml作为解析器,效率更高
  3. 解析得到的Soup文档可以使用find()find_all()方法及selector()方法定位需要的元素
  4. 标签选择器:

import requests
from bs4 import BeautifulSoup
res = requests.get('http://httpbin.org')
soup = BeautifulSoup(res.text,'lxml')
print(soup.title) #title标签,<title>httpbin.org</title>
print(soup.title.name)  #获取了titlename属性
print(soup.p)   #p标签,如果有多个p标签只会返回访问的第一个内容
print(soup.code.string)   #获取code标签里面的文字
print(soup.head.title.string) #嵌套选择
print(soup.p.contents) #获取子节点
print(soup.a.parents) #获取父节点

 

5.find_all (name,attrs,recursive,text,**kwargs) 可根据标签名、属性、内容、文档查找内容

print(soup.find_all(attrs = {'name':'elements'}))

print(soup.find_all('ul'))

attrs传入的是一个字典类型,传入的键名就是属性的名称,键值就是属性的值

 

6.find()方法与find_all()方法类似,只是find_all()方法返回的是文档中符合条件的所有tag,是一个集合(class 'bs4.element.ResultSet'), find()方法返回的一个Tag(class 'bs4.element.Tag')

 

7.Selector()方法

c=soup.select('#swagger-ui > div > div > div > section > div.info > div.description > div > p > b')
print(c)

 

注:括号内的内容可以通过定位在网页源代码中想要提取的数据选择Copy selector得到,如下图

 

 

 

posted @ 2020-07-28 14:51  十六m  阅读(104)  评论(0)    收藏  举报