一.python爬蟲使用的模塊
1.import requests
2.from bs4 import BeautifulSoup
3.pandas 數據分析高級接口模塊
二. 爬取數據在第一個請求中時, 使用BeautifulSoup

import requests
# 引用requests庫
from bs4 import BeautifulSoup
# 引用BeautifulSoup庫
res_movies = requests.get('https://movie.douban.com/chart')
# 獲取數據
bs_movies = BeautifulSoup(res_movies.text,'html.parser')
# 解析數據
list_movies= bs_movies.find_all('div',class_='pl2')
# 查找最小父級標簽
list_all = []
# 創建一個空列表,用於存儲信息
for movie in list_movies:
tag_a = movie.find('a')
# 提取第0個父級標簽中的<a>標簽
name = tag_a.text.replace(' ', '').replace('\n', '')
# 電影名,使用replace方法去掉多余的空格及換行符
url = tag_a['href']
# 電影詳情頁的鏈接
tag_p = movie.find('p', class_='pl')
# 提取父級標簽中的<p>標簽
information = tag_p.text.replace(' ', '').replace('\n', '')
# 電影基本信息,使用replace方法去掉多余的空格及換行符
tag_div = movie.find('div', class_='star clearfix')
# 提取父級標簽中的<div>標簽
rating = tag_div.text.replace(' ', '').replace('\n', '')
# 電影評分信息,使用replace方法去掉多余的空格及換行符
list_all.append([name,url,information,rating])
# 將電影名、URL、電影基本信息和電影評分信息,封裝為列表,用append方法添加進list_all
print(list_all)
# 打印
三.當數據不在第一個請求中時, 使用network獲取數據




例如:
import requests
from bs4 import BeautifulSoup
res = requests.get('https://c.y.qq.com/soso/fcgi-bin/client_search_cp?ct=24&qqmusic_ver=1298&new_json=1&remoteplace=txt.yqq.song&searchid=71746668539504502&t=0&aggr=1&cr=1&catZhida=1&lossless=0&flag_qc=0&p=1&n=10&w=%E5%91%A8%E6%9D%B0%E4%BC%A6&g_tk=5381&loginUin=0&hostUin=0&format=json&inCharset=utf8&outCharset=utf-8¬ice=0&platform=yqq.json&needNewCode=0')
res_json = res.json()
songs = res_json['data']['song']['list']
for i in range(len(songs)):
print(songs[i]['name'])

四. 帶參數param可以請求不同數據, 帶header可以偽裝為瀏覽器
import requests
# 引用requests模塊
for i in range(0,3):
url = 'https://movie.douban.com/j/search_subjects'
header = {
'Origin': 'https://y.qq.com',
'Referer': 'https://y.qq.com/portal/search.html',
'Sec-Fetch-Mode': 'cors',
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64)'
}
param = {'type': 'movie',
'tag': '熱門',
'sort': 'recommend',
'page_limit': '20',
'page_start': i*20}
# print(param)
res_movie = requests.get(url,params=param, headers=header)
# 調用get方法,下載電影列表
json_movie = res_movie.json()
# 使用json()方法,將response對象,轉為列表/字典
# print(json_movie)
list_movies = json_movie['subjects']
# 一層一層地取字典,獲取電影名稱
for comment in list_movies:
# list_movies,comment是它里面的元素
print(comment['title'])
# 輸出電影名名稱
五.保存數據


