一般来说,我对scrapy和python很陌生,但我真的很想学习,我为此付出了很多努力!我想爬eb5信息网,选择每个单独的区域中心,并复制每个中心的电话号码和电子邮件。然而,当我爬网时,它通知我有0个网站被爬网。任何帮助都将不胜感激!在
这是我的蜘蛛:
from scrapy.item import Item, Field
class Eb5Item(Item):
description = Field()
from scrapy.contrib.spiders import CrawlSpider, Rule
from scrapy.contrib.linkextractors.sgml import SgmlLinkExtractor
from scrapy.selector import HtmlXPathSelector
from parser_module.items import Eb5Item
class Eb5Spider(CrawlSpider):
name = 'eb5'
allowed_domains = ["eb5info.com"]
start_urls = ["http://eb5info.com/regional-centers"]
rules = (Rule(SgmlLinkExtractor(allow=[r'regional-centers/*$']), callback='parse_item'),)
def parse_item(self, response):
hxs = HtmlXPathSelector(response)
sites = hxs.select('//ul/li/a/@href')
items = []
for site in sites:
item = Eb5Item()
item['url'] = response.url
item['phone'] = site.select("()").extract()
items.append(item)
return (items)
这是我的物品档案:
^{pr2}$非常感谢你!在
我知道的东西不多,所以我用bs4做这个,希望你会发现它有用
这将为您提供所有链接,然后您可以调用一个传递url的函数并对其进行解析。 我你会得到文本,我还没有格式好打印,你现在可以做了,我希望你得到概念。我在这里打印信息,你可以保存它,做任何你想做的事。在
诚然,使用}结合使用。在
Scrapy
来实现这一点有点太强大了。我个人会把requests
与lxml
或{无论如何,这里有一个你的代码的工作版本。我没有费心清理结果。这取决于你。在
它的工作方式是
parse
从start_urls
获取链接。因为只有一个页面(在start_urls
中的同一个URL)包含所有链接,所以不需要使用Rule
来跟踪其他页面。在我们重写}发出回调。这意味着对于
parse
以获取来自所述页面的链接,然后使用Request
向{parse
找到的每个链接,我们“进入”该链接并在其中执行parse_item
。在这一级别的刮擦在技术上很简单,并不真正符合爬网的条件,这意味着{}在这个级别上是过度杀戮的。在
请注意,我使用的是scray的最新版本,因此有些类和方法与您的不同。在
相关问题 更多 >
编程相关推荐