简单爬取——爬取电影详情页

简介: 简单使用

紧接上回我们爬取了电影的列表页,我们也获得了所有详情页的URL,下一步就是解析详情页并提取到我们想要的信息,观察详情页的网页结构,我们想要的内容和对应的结点信息如下。
封面:是一个img结点。其class属性为over
名称:是一个h2结点,其内容是电影名称
类别:是span结点,其内容是电影类别。span结点的外侧是button结点,再外侧的class为categories的div结点。
上映时间:是span结点,其内容包含上映时间,外侧是class为info的div结点。
评分:是一个p结点,其内容便是电影评分。p结点的class属性为score。
剧情简介:是一个p结点,其内容便是剧情简介,其外侧是class为drama的div结点。

详情页的爬取

def scape_detail(url):

return scrape_page(url)

很简单

详情页的解析

def parse_detail(html):

cover_pattern=re.compile('class="item.*?<img.*?src="(.*?)".*?class="cover">',re.S)
cover=re.search(cover_pattern,html).group(1).strip() if re.search(cover_pattern,html) else None
name_pattern=re.compile('<h2.*?>(.*?)</h2>')
name=re.search(name_pattern,html).group(1).strip() if re.search(name_pattern,html) else None
published_at_pattern=re.compile('(\d{4}-\d{2}-\d{2}).*?上映')
published=re.search(published_at_pattern,html).group(1).strip() if re.search(published_at_pattern,html) else None
return {
    "cover":cover,
    "name":name,
    "published":published

}  

我们根据字典和正则表达式来完成对详情页的提取与分析 。

main方法

def main():

for page in range(1,TOTAL_PAGE+1):
    index_html=scrape_index(page)
    detail_urls=parse_index(index_html)
    # logging.info("detail urls %s",list(detail_urls))
    for detail_url in detail_urls:
        detail_html=scape_detail(detail_url)
        data=parse_detail(detail_html)
        logging.info("get detail data %s",data)
        save(data)

保存文件并对爬虫代码进行改良

保存数据方法的定义

import json
from os import makedirs
from os.path import exists
RESULTS_DIR='results'
exists(RESULTS_DIR) or makedirs(RESULTS_DIR)
def save(data):

name=data.get("name")
data_path=f'{RESULTS_DIR}/{name}.json'
json.dump(data,open(data_path,'w',encoding='utf-8'),ensure_ascii=False,indent=2)

多进程的改良

if __name__=="__main__":

pool=multiprocessing.Pool()
pages=range(1,TOTAL_PAGE+1)
pool.map(main,pages)
pool.close()
pool.join()

每次的的调用分别变成一个进程,加入进程池当中,进城池根据运行环境来决定多少个进程

相关文章
|
数据采集 机器学习/深度学习 算法
Matlab函数——mapminmax
Matlab函数——mapminmax
441 0
|
4月前
|
存储 数据采集 监控
电商数据分析实战:利用 API 构建商品价格监控系统
在电商运营中,商品价格直接影响转化率和竞争力。本文介绍如何构建一套自动化价格监控系统,覆盖京东、淘宝双平台,实现数据采集、存储、分析与智能告警,助力企业实时掌握价格动态,优化定价策略。
|
存储 缓存 中间件
谈谈中间件开发,给想从事中间件开发的同学
本文主要是写给那些想从事中间件开发的同学看的 :) 如果你没有这个打算,那么本文的学习路线非但不实用,还可能会影响你正常的工作 :) 什么是中间件开发?
1365 106
|
数据采集 存储 JavaScript
(2024)豆瓣电影详情内容爬虫详解和源码
这是一个Python爬虫程序,用于抓取豆瓣电影详情页面如`https://movie.douban.com/subject/1291560/`的数据。它首先发送GET请求,使用PyQuery解析DOM,然后根据`&lt;br&gt;`标签分割HTML内容,提取电影信息如导演、演员、类型等,并将中文键转换为英文键存储在字典中。完整代码包括请求、解析、数据处理和测试部分。当运行时,会打印出电影详情,如导演、演员列表、类型、时长等。
424 1
 (2024)豆瓣电影详情内容爬虫详解和源码
|
持续交付 Python
解决Python执行命令时路径空格引发的困扰
在Python编程中,执行含空格的系统路径可能导致命令执行失败。本文介绍了三种解决方法:1) 使用引号包裹路径;2) 转义空格字符;3) 利用`os`模块的`normpath`或`join`处理路径。推荐使用`subprocess`模块以获得更精确的命令控制。最佳实践包括避免路径空格、使用`os.path.join()`构建路径及充分测试。
|
存储 PyTorch API
Transformers 4.37 中文文档(十九)(2)
Transformers 4.37 中文文档(十九)
892 1
|
数据采集 存储 JSON
豆瓣电影信息爬虫实战-2024年6月
使用Python和`requests`、`PyQuery`库,本文教程教你如何编写一个豆瓣电影列表页面的爬虫,抓取电影标题、导演、主演等信息。首先确保安装所需库,然后了解技术栈,包括Python、Requests、PyQuery和正则表达式。爬虫逻辑包括发送HTTP请求、解析HTML、提取数据。代码示例展示了如何实现这一过程,最后运行爬虫并将结果保存为JSON文件。注意遵守网站使用条款和应对反爬策略。
1043 2
|
数据可视化 物联网 Swift
谷歌开源Gemma2!魔搭社区推理、微调最佳实践教程
Google面向全球研究人员和开发者发布并开源 Gemma 2 大语言模型!本次Gemma 2 系列为轻量级开放模型,提供9B和27B参数两种尺寸,采用全新的架构设计,性能表现优异。
|
编解码 供应链 监控
《泛娱乐行业技术服务白皮书》——三、泛娱乐典型业务架构与场景——3.1直播类泛娱乐——3.1.1 直播类泛娱乐定义
《泛娱乐行业技术服务白皮书》——三、泛娱乐典型业务架构与场景——3.1直播类泛娱乐——3.1.1 直播类泛娱乐定义
533 0
|
Linux 网络安全 数据安全/隐私保护
Linux下ssh远程主机报错:ssh_exchange_identification: read: Connection 解决
Linux下ssh远程主机报错:ssh_exchange_identification: read: Connection 解决
553 0