个人网站可以做经营性的吗,做网站视频存储在哪里,子页面的网站地址怎么做,网站设计就业培训豆瓣电影信息爬虫【2024年6月】教程#xff0c;赋完整代码 在本教程中#xff0c;我们将使用以下技术栈来构建一个爬虫#xff0c;用于爬取豆瓣电影列表页面的信息#xff1a; 完整代码放到最后 #xff1b; 完整代码放到最后 #xff1b; 完整代码放到最后 #xff1b;…豆瓣电影信息爬虫【2024年6月】教程赋完整代码 在本教程中我们将使用以下技术栈来构建一个爬虫用于爬取豆瓣电影列表页面的信息 完整代码放到最后 完整代码放到最后 完整代码放到最后 重要的事情说三遍。 1. 技术栈介绍
在本教程中我们将使用以下技术栈来构建一个爬虫用于爬取豆瓣电影列表页面的信息
Python: 一种广泛使用的高级编程语言因其简洁的语法和强大的库支持而受到开发者的喜爱。Requests: 一个简单易用的HTTP库用于发送各种HTTP请求。PyQuery: 一个使Python像jQuery一样解析HTML文档的库。正则表达式 (re模块): Python内置的正则表达式库用于字符串搜索和替换。
2. 环境搭建
在开始编写爬虫之前需要确保你的开发环境中安装了Python以及上述提到的库。可以通过以下命令安装所需的库
pip install requests pyquery3. 代码逻辑概述
本爬虫的主要任务是从一个给定的豆瓣电影列表页面URL中提取电影的详细信息。以下是代码的主要逻辑流程
发送HTTP请求使用requests库向豆瓣电影列表页面发送GET请求。检查响应状态确保请求成功即HTTP状态码为200。解析HTML内容使用PyQuery解析返回的HTML文档。提取电影信息遍历页面中的电影列表项提取每部电影的相关信息。数据存储与输出将每部电影的信息存储在字典中并添加到列表中最后返回这个列表。
4. 详细代码解析
4.1 导入库
import requests
from pyquery import PyQuery as pq
import re这里导入了所需的库requests用于网络请求PyQuery用于HTML解析re用于正则表达式匹配。
4.2 定义爬虫函数
def doulist_crawler(url):# ...定义了一个名为doulist_crawler的函数它接受一个参数url即豆瓣电影列表的URL。
4.3 设置请求头
headers {User-Agent: ...,Accept: ...
}设置请求头模拟浏览器访问避免被服务器识别为爬虫。
4.4 发送GET请求
response requests.get(url, headersheaders)使用requests.get函数发送GET请求到指定的URL并携带之前设置的请求头。
4.5 检查响应状态
if response.status_code 200:# ...检查HTTP响应状态码如果为200表示请求成功继续执行否则打印错误信息并返回空列表。
4.6 解析HTML内容
doc pq(response.text)使用PyQuery解析服务器返回的HTML内容。
4.7 提取电影信息
doulist_item_doc doc(.doulist-item)
doulist []
for item in doulist_item_doc.items():# ...遍历页面中所有电影列表项(.doulist-item)并对每一项进行信息提取。
4.8 存储与返回电影信息
item_dict {# ...
}
doulist.append(item_dict)将每部电影的信息存储在一个字典中然后将该字典添加到列表doulist中。
5. 运行爬虫和完整代码
最后调用doulist_crawler函数并传入豆瓣电影列表页面的URL就可以得到一个包含所有电影信息的列表。
import requests
from pyquery import PyQuery as pq
import redef doulist_crawler(url):此函数爬取豆瓣电影列表页面并提取列出的电影的详细信息。该函数向指定的豆瓣电影列表URL发送GET请求并使用预定义的头部信息来模拟浏览器请求。如果请求成功它将使用PyQuery解析HTML内容并提取电影的详细信息如标题、导演、主演、类型、地区、年份、评分和评分数量。每部电影的信息存储在一个字典中并添加到名为doulist的列表中。然后打印出详细信息。提取的数据包括- 电影标题- 导演- 主演- 类型- 制作地区- 发行年份- 评分数量- 每部电影的详细URL参数:url (str): 要爬取的豆瓣-豆列的电影列表页面的URL。https://www.douban.com/doulist/240962/返回:list: 包含每部电影详细信息的字典组成的列表。:return:# 定义请求头headers {User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3,Accept: text/html,application/xhtmlxml,application/xml;q0.9,image/webp,*/*;q0.8,# 其他需要的请求头...}# 发送 GET 请求并获取响应内容response requests.get(url, headersheaders)# 确保请求成功if response.status_code 200:# 使用 PyQuery 解析网页内容doc pq(response.text)doulist_item_doc doc(.doulist-item)doulist []for item in doulist_item_doc.items():item_dict {}# 初始化变量director Nonestarring Nonegenre Noneregion Noneyear Nonedetail_url item(.title a).attr(href)title item(.title a).text()rating_nums item(.rating_nums).text()rating_count_text item(.rating span:contains(人评价)).text()rating_count int(re.search(r\d, rating_count_text).group(0))lines item(div.abstract).text().split(\n)for line in lines:if 导演 in line:director line.split(导演:)[-1].strip()elif 主演 in line:starring line.split(主演:)[-1].strip()elif 类型 in line:genre line.split(类型:)[-1].strip()elif 制片国家/地区 in line:region line.split(制片国家/地区:)[-1].strip()elif 年份 in line:year line.split(年份:)[-1].strip()item_dict[director] directoritem_dict[starring] starringitem_dict[genre] genreitem_dict[region] regionitem_dict[year] yearitem_dict[detail_url] detail_urlitem_dict[title] titleitem_dict[rating_count] rating_countdoulist.append(item_dict)return doulist # 返回电影列表else:print(f请求失败状态码{response.status_code})return [] # 如果请求失败返回空列表if __name__ __main__:move_list doulist_crawler(https://www.douban.com/doulist/240962/)print(move_list)6. 注意事项
确保遵守豆瓣的使用条款不要过度请求。考虑到网站的反爬虫机制可能需要定期更新请求头或使用代理。爬取的数据应仅用于个人学习和研究不得用于商业用途。
通过本教程你应该能够理解并运行这个豆瓣电影信息爬虫。如果有任何问题欢迎随时提问。