豆瓣top250爬虫 单线程
时间: 2024-12-26 17:14:42 浏览: 15
### 单线程实现豆瓣Top250电影爬虫 Python 示例代码
为了实现单线程的豆瓣Top250电影爬虫,可以采用`requests`库发送HTTP请求并利用`lxml`中的XPath解析网页结构。以下是具体实现方式:
#### 导入所需模块
```python
import requests
from lxml import etree
import csv
```
#### 设置请求头与URL模板
设置合理的User-Agent模拟浏览器访问行为,并定义目标页面的基础链接。
```python
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36'
}
base_url = "https://movie.douban.com/top250?start={}&filter="
```
#### 获取HTML文档对象
构建函数用于发起GET请求获取响应内容,并将其转换成可供后续操作的数据形式。
```python
def get_html(url):
response = requests.get(url=url, headers=headers)
html_text = response.text
tree = etree.HTML(html_text)
return tree
```
#### 解析数据项
编写专门的方法来定位到每部影片的关键信息节点,比如片名、评分等字段。
```python
def parse_data(tree):
movie_list = []
titles = tree.xpath('//div[@class="item"]//span[@class="title"][1]/text()')
scores = tree.xpath('//div[@class="star"]/span[2]/text()')
for i in range(len(titles)):
item = {}
item['Title'] = titles[i].strip()
item['Score'] = float(scores[i])
movie_list.append(item)
return movie_list
```
#### 存储抓取的结果至CSV文件
创建辅助功能负责把收集来的资料记录下来以便日后查阅分析。
```python
def save_to_csv(data, filename='douban_top_250_movies.csv'):
with open(filename, mode='w', newline='', encoding='utf-8') as f:
writer = csv.DictWriter(f, fieldnames=['Title', 'Score'])
writer.writeheader()
writer.writerows(data)
```
#### 主程序逻辑控制流程
最后组合以上各个部分形成完整的执行过程,循环遍历所有分页直至完成整个列表的信息采集工作。
```python
if __name__ == '__main__':
all_movies = []
for page_num in range(0, 250, 25): # 豆瓣top250共有十页,每次加载25条记录
url = base_url.format(page_num)
html_tree = get_html(url)
movies_on_page = parse_data(html_tree)
all_movies.extend(movies_on_page)
save_to_csv(all_movies)
```
此段脚本展示了如何运用Python语言配合相关工具包完成一次基本但有效的网络爬取任务[^1]。
阅读全文