爬取抽屉热搜榜文章
import os
import requests
from bs4 import BeautifulSoup
# 登陸, 模仿用戶瀏覽器
r1 = requests.get(# 要爬取的網頁url='https://dig.chouti.com/',# 瀏覽器的信息headers={'user-agent':'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.99 Safari/537.36'}
)
# 編碼
# r1.encoding = 'gbk'
# 獲取第一條cookie
r1_cookie_dict = r1.cookies.get_dict()# 登陸信息,需要的時候再加上
# r2 = requests.post(
# url='https://dig.chouti.com/login',
# # 加入瀏覽器信息
# headers={
# 'user-agent':'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.99 Safari/537.36'
# },
# # 填寫賬號密碼
# data={
# 'phone':'8613520396483',
# 'password':'333886hu',
# 'oneMonth':1
# },
# # 抽屜網還要用第一次那個cookies值
# cookies=r1_cookie_dict
# )# 去響應體中j解析我們想要的數據
soup = BeautifulSoup(r1.text, 'html.parser')
# 按照規則找名字: div標簽且id=content-list 找到匹配的第一個
container = soup.find(name='div', attrs={'id':'content-list'})
# 去container找到所有的class=item的div標簽
div_list = container.find_all(name='div',attrs={'class':'item'})
# 循環所有的標簽
for tag in div_list:# 找到class='part2'的所有div標簽articles = tag.find(name='div', attrs={'class': 'part2'})# 如果為空就跳過if not articles:continue# 找到class='summary'的所有span標簽summay = tag.find(name='span', attrs={'class': 'summary'})if not summay:continue# 找到class='show-content color-chag'的所有a標簽articles_addr = tag.find(name='a', attrs='show-content color-chag')if not articles_addr:continueprint('標題:',articles['share-title'])print('簡介:',summay.text)print('文章地址:', articles_addr['href'])print('圖片地址:', articles['share-pic'])print('------------------------------------------------')# 下載圖片# 找到圖片地址https://img.jandan.net/news/2018/07/D5BA3729EF7F435B8BD5BC7DC8DCDA8C_W550H698.jpgimg_addr = articles['share-pic']# 切割出文件名D5BA3729EF7F435B8BD5BC7DC8DCDA8C_W550H698.jpgfile_name = img_addr.rsplit('/', maxsplit=1)[1] # 創建一個文件夾來存要下載的圖片root = "F:/簡單項目在這里/pacongfirst/img/"# join連接 拼接一個完整文件名path_filename = os.path.join('root', file_name)# 或 path_filename = root + file_nametry:# 如果文件夾不存在就創建if not os.path.exists('root'):os.mkdir('root')# 如果文件不存在就下載if not os.path.exists(path_filename):# 拿到圖片r3 = requests.get(url=img_addr)with open(path_filename, 'wb') as f:f.write(r3.content)else:print('文件已存在')except:print('爬取失敗')
?
總結
- 上一篇: vga2usb linux,VGA to
- 下一篇: C语言学习笔记1——C语言程序