fanshudada

一.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&notice=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\'])

# 输出电影名名称

 

五.保存数据

 

 

 

 

 



分类:

技术点:

相关文章: