scrapy爬虫的案例
时间: 2025-01-27 20:04:49 浏览: 40
### Scrapy 爬虫 示例项目教程
#### 创建Scrapy项目
为了启动一个新的Scrapy项目,在命令行中进入想要保存项目的文件夹位置,然后运行`scrapy startproject project_name`命令来创建新的Scrapy项目[^3]。
```bash
scrapy startproject douban_movie_top250
```
此命令会生成一个名为`douban_movie_top250`的新目录,其中包含了基本的Scrapy项目结构。
#### 明确目标——定义所需抽取的数据项(Item)
在开始编写爬虫之前,先确定希望从网页上抓取哪些信息。对于豆瓣电影Top250的例子来说,可能感兴趣的信息有电影排名、名称、简介、评分等级以及评论数量等。这些字段可以在items.py文件里被定义成Item类的一部分。
#### 制作爬虫——编写Spider脚本来抓取网站并提取所有Item对象
一旦明确了要收集的具体数据点之后,就可以着手构建具体的Spiders了。通过执行如下指令可快速建立一个基础模板:
```bash
cd douban_movie_top250
scrapy genspider top250 movie.douban.com/top250
```
这将在spiders子目录下自动生成一个叫做top250.py的Python模块作为起点。在这个文件内部,可以根据实际需求调整start_urls列表中的URL地址,并利用XPath表达式定位页面上的各个元素节点以完成数据采集工作。
#### 存储内容——编写Pipeline处理已提取出来的Item对象
最后一步就是决定如何处置已经获得的结果集。通常情况下可以选择将其导出至JSON文件、CSV表格或是直接存入关系型数据库如MySQL当中去。为此需要编辑pipelines.py文档内的相应函数逻辑实现上述功能。
```python
import pymysql
class DoubanMovieTop250Pipeline(object):
def __init__(self):
self.conn = pymysql.connect(host='localhost', user='root', passwd='', db='test')
self.cursor = self.conn.cursor()
def process_item(self, item, spider):
sql = "INSERT INTO movies (rank, title, rating) VALUES (%s,%s,%s)"
val = (item['ranking'], item['title'], item['rating'])
try:
self.cursor.execute(sql,val)
self.conn.commit()
except Exception as e:
print(e)
self.conn.rollback()
return item
def close_spider(self, spider):
self.conn.close()
```
以上代码片段展示了怎样把抓取到的内容写入本地MySQL服务器里的movies表内。
阅读全文
相关推荐


















