简单python爬虫
import requests用法
get方法
import requests
response = requests.get("https://baidu.com/")
print(type(response))#打印response类型
print(response.status_code)#打印状态码
#200是正常404是找不到网页502是代码出错
print(response.text)#打印内容
print(type(response.text))#字符串类型
带参数GET请求
import requests
response = requests.get("https://baidu.com/get?name=germey&age=22")
print(response.text)#参数将传入网页的args中
各种其他方法
import requests
response = requests.post('https://baidu.com/post')
requests.put('https://baidu.com/put')
requests.delete('https://baidu.com/delete')
requests.head('https://baidu.com/get')
requests.options('https://baidu.com/get')
增加headers
当浏览器设置阻拦时,需要增加headers,否则将无法爬出来(报404)
headers可在对应网页查找net-work的user-agent中找到
import requests
headers = {
'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/52.0.2743.116 Safari/537.36'
}
response = requests.get("https://www.zhihu.com/explore", headers=headers)
print(response.text)
BeautifulSoup 引用
file = open("D:\\untitled\\fang_yi.html","r",encoding="utf-8")
demo = file.read()
file.close()
from bs4 import BeautifulSoup
soup = BeautifulSoup(demo,"html.parser")
find_all找到标签下的内容
find_all 返回的是数组,只有数组内的元素才能使用点find_all
todaydata = soup.find_all('div',class_="todaydata")[7]#根据代码数出中国疫区在第八个
div = todaydata.find_all('div',class_="prod")#通过点find_all找出这个数组
anchors = []#定义一个新字典
for each in div: #在每个div里面找其中元素,由于打印后发现each里面只有一个,所以直接找到0号元素
area = each.find_all('span',class_="area")[0].text
confirm = each.find_all('span',class_="confirm")[0].text
dead = each.find_all('span',class_="dead")[0].text
cured = each.find_all('span',class_="cured")[0].text
anchor = {'area':area, 'confirm':confirm, 'dead':dead, 'cured':cured }
anchors.append(anchor)#将每一个anchor加入字典中
soup.find_all(‘div’) 与 直接soup('div ') / soup.div一致
关于寻找标签的其他做法
找a标签 ————>你将获得第一个a标签
soup.a
你还可以寻找form标签,或者div标签。
如果要寻找其中的如href的具体内容
soup.a["href"]
如果使用find来寻找,你也将获得他的第一个标签
soup.find('div')
import csv 用法
将字典使用csv格式写入
with open('D:\\untitled\\fang_yi.csv', 'w', newline='') as csv_file:#with可以不用关闭,newline=""是不用空行
csv_writer = csv.writer(csv_file)
for value in anchors:
csv_writer.writerow([value['area'], value['confirm'], value['dead'], value['cured']])