成功抓取douban 所有电影

之前爬了250,想爬所有的电影
Rule(LinkExtractor( allow =( r'https://movie.douban.com/subject/\d+' )) , callback = "parse_item" ) ,
修改为
start_urls = [ "https://movie.douban.com/subject/26611090/" ]
rules = [
Rule(LinkExtractor( allow =( r'https://movie.douban.com/subject/\d+' ) , restrict_xpaths = '//*[@id="recommendations"]/div' ) ,
callback = "parse_item" , follow = True ) ,
]
提取 喜欢这部电影的人也喜欢   推荐的10部电影,这样应该不会出现太多电视剧。
问题:
https://movie.douban.com/subject/2074813 这种页面没有评分
解决,插入库之前判断。如果数据不符合格式,可传默认值0分等。或丢弃
1,如果存在了,就更新下分数和投票数据

最后爬到 https://movie.douban.com/subject/2127013 共 41924 行
2017-11-15 11:30:56 ERROR:Item 404:https://movie.douban.com/subject/2970103/?from=subject-page

转载于:https://www.cnblogs.com/elesos/p/7940907.html

### 使用 Python 编写爬虫抓取豆瓣电影明星图片 为了实现这一目标,可以采用 `requests` 和 `BeautifulSoup` 库来处理网页请求和解析 HTML 文档。需要注意的是,在实际操作前应当阅读并遵守网站的服务条款以及 robots.txt 文件中的规定[^1]。 #### 安装所需库 首先安装必要的第三方库: ```bash pip install requests beautifulsoup4 lxml ``` #### 导入模块与设置头部信息 导入所需的 Python 模块,并模拟浏览器访问行为以提高成功率: ```python import os from urllib.request import urlretrieve import requests from bs4 import BeautifulSoup headers = { 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 \ (KHTML, like Gecko) Chrome/89.0.4389.90 Safari/537.36' } ``` #### 获取页面内容 定义函数用于发送 HTTP 请求获取指定 URL 的响应数据: ```python def get_page(url): try: response = requests.get(url=url, headers=headers) if response.status_code == 200: return response.text else: print(f'Failed to load page {url}') return None except Exception as e: print(e) return None ``` #### 解析HTML文档提取图片链接 创建一个新的方法用来分析返回的内容找到所有的演员头像URL地址: ```python def parse_html(html_content): soup = BeautifulSoup(html_content,'lxml') items = soup.find_all('div', class_='item')[:10] image_urls = [] for item in items: img_tag = item.select_one('.pic a img')['src'] image_urls.append(img_tag) return image_urls ``` #### 下载图片保存到本地文件夹 最后一步就是遍历上述获得的列表下载每一张照片存储至特定目录下: ```python def download_images(image_links, save_path='./images'): if not os.path.exists(save_path): os.makedirs(save_path) for index, link in enumerate(image_links): filename = f'{save_path}/actor_{index}.jpg' urlretrieve(link,filename=filename) print(f'Downloaded: {link} -> {filename}') if __name__ == '__main__': target_url = "https://movie.douban.com/" html_data = get_page(target_url) if html_data is not None: images_list = parse_html(html_data) download_images(images_list) ``` 此段脚本实现了从给定的目标网址开始,自动查找并下载前十位演员的照片。当然这只是一个简单的例子,真实环境中可能还需要考虑更多因素比如异常情况下的重试机制、多线程加速下载速度等优化措施。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值