独立 python 文件中的网络爬虫
A web crawler in a self-contained python file
我发现很多 Scrapy
教程(例如 this good tutorial)都需要下面列出的步骤。结果是 项目,其中包含大量文件(project.cfg
+ 一些 .py
文件 + 特定文件夹结构)。
如何使步骤(在下面列出)作为一个独立的 python 文件工作,可以与 python mycrawler.py
一起运行?
(而不是包含大量文件、一些 .cfg 文件等的完整项目,并且必须使用 scrapy crawl myproject -o myproject.json
... 顺便说一下,似乎 scrapy
是一个新的 shell 命令?这是真的吗?)
注意:here could be an answer to this question但不幸的是它已被弃用,不再有效。
1) 使用scrapy startproject myproject
创建一个新的scrapy项目
2) 像这样用Item
定义数据结构:
from scrapy.item import Item, Field
class MyItem(Item):
title = Field()
link = Field()
...
3) 用
定义爬虫
from scrapy.spider import BaseSpider
from scrapy.selector import HtmlXPathSelector
class MySpider(BaseSpider):
name = "myproject"
allowed_domains = ["example.com"]
start_urls = ["http://www.example.com"]
def parse(self, response):
hxs = HtmlXPathSelector(response)
...
4) 运行:
scrapy crawl myproject -o myproject.json
Scrapy 不是 unix 命令,它只是像 python、javac、gcc 等可执行文件
bcz 你正在为此使用框架你必须使用由提供的命令
框架。
您可以做的一件事是创建一个 bash 脚本并在您需要时简单地执行或从其他程序中执行它。
你可以使用 urllib3 编写爬虫,它很简单
您可以 运行 将 scrapy 蜘蛛作为单个脚本使用 runspider
而无需启动项目
这是你想要的吗?
#myscript.py
from scrapy.item import Item, Field
from scrapy import Spider
class MyItem(Item):
title = Field()
link = Field()
class MySpider(Spider):
start_urls = ['http://www.example.com']
name = 'samplespider'
def parse(self, response):
item = MyItem()
item['title'] = response.xpath('//h1/text()').extract()
item['link'] = response.url
yield item
现在您可以 运行 使用 scrapy runspider myscript.py -o out.json
我发现很多 Scrapy
教程(例如 this good tutorial)都需要下面列出的步骤。结果是 项目,其中包含大量文件(project.cfg
+ 一些 .py
文件 + 特定文件夹结构)。
如何使步骤(在下面列出)作为一个独立的 python 文件工作,可以与 python mycrawler.py
一起运行?
(而不是包含大量文件、一些 .cfg 文件等的完整项目,并且必须使用 scrapy crawl myproject -o myproject.json
... 顺便说一下,似乎 scrapy
是一个新的 shell 命令?这是真的吗?)
注意:here could be an answer to this question但不幸的是它已被弃用,不再有效。
1) 使用scrapy startproject myproject
2) 像这样用Item
定义数据结构:
from scrapy.item import Item, Field
class MyItem(Item):
title = Field()
link = Field()
...
3) 用
定义爬虫from scrapy.spider import BaseSpider
from scrapy.selector import HtmlXPathSelector
class MySpider(BaseSpider):
name = "myproject"
allowed_domains = ["example.com"]
start_urls = ["http://www.example.com"]
def parse(self, response):
hxs = HtmlXPathSelector(response)
...
4) 运行:
scrapy crawl myproject -o myproject.json
Scrapy 不是 unix 命令,它只是像 python、javac、gcc 等可执行文件
bcz 你正在为此使用框架你必须使用由提供的命令
框架。
您可以做的一件事是创建一个 bash 脚本并在您需要时简单地执行或从其他程序中执行它。
你可以使用 urllib3 编写爬虫,它很简单
您可以 运行 将 scrapy 蜘蛛作为单个脚本使用 runspider
而无需启动项目
这是你想要的吗?
#myscript.py
from scrapy.item import Item, Field
from scrapy import Spider
class MyItem(Item):
title = Field()
link = Field()
class MySpider(Spider):
start_urls = ['http://www.example.com']
name = 'samplespider'
def parse(self, response):
item = MyItem()
item['title'] = response.xpath('//h1/text()').extract()
item['link'] = response.url
yield item
现在您可以 运行 使用 scrapy runspider myscript.py -o out.json