首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >抓取不是按照allowed_domains过滤结果。

抓取不是按照allowed_domains过滤结果。
EN

Stack Overflow用户
提问于 2017-01-29 17:03:18
回答 1查看 749关注 0票数 2

几乎复制了允许所有子域

注:首先,我对Scrapy很陌生&我没有足够的声誉来评论 的问题。所以,我决定问一个新的!

问题陈述:

我用BeautifulSoup从特定的网站上删除电子邮件地址。如果电子邮件地址在那个特定的页面上可用(即example.com),它是可以正常工作的,但如果它在Example.com/联系人-us上可用,则非常明显。

因此,我决定使用Scrapy。虽然我使用allowed_domains只获得与域相关的链接,但它也为我提供了所有的场外链接。我尝试了@agstudy在问题中提出的另一种方法,即在规则中使用SgmlLinkExtractor。

然后我发现了这个错误,

追溯(最近一次调用):文件"/home/msn/Documents/email_scraper/email_scraper/spiders/emails_spider.py",第14行,在scrapy.contrib.linkextractors.sgml导入SgmlLinkExtractor文件第7行中,在“从"/home/msn/Documents/scrapy/lib/python3.5/site-packages/scrapy/linkextractors/sgml.py",导入*文件”第7行中,在“从sgmllib导入”SGMLParser ImportError中:没有名为“sgmllib”的模块

基本上,ImportError是关于Python3.x中sgmlib (简单SGML解析器)的弃用。

到目前为止我尝试过的:

代码语言:javascript
复制
class EmailsSpiderSpider(scrapy.Spider):
    name = 'emails'
    # allowed_domains = ['example.com']
    start_urls = [
        'http://example.com/'
    ]

    rules = [
        Rule(SgmlLinkExtractor(allow_domains=("example.com"),), callback='parse_url'),
    ]

    def parse_url(self, response):
        hxs = HtmlXPathSelector(response)
        urls = hxs.select("//a/@href").extract()
        print(set(urls))  # sanity check

我也尝试了LxmlLinkExtractor和CrawlSpider,但仍然获得离线链接。

我该怎么做才能完成这件事?还是我解决问题的方法是错误的?

任何帮助都将不胜感激!

另一个注意事项:每次网站都会有不同的废电子邮件。所以,我不能使用特定的HTML或CSS选择器!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-01-29 20:13:33

hxs.select('//a/@href')中使用xpath表达式,这意味着从页面上的所有a标记中提取href属性值,这样就可以准确地获得所有链接,包括非站点链接。您可以使用的是LinkExtractor,它应该是这样的:

代码语言:javascript
复制
from scrapy.linkextractors import LinkExtractor

def parse_url(self, 
    urls = [l.url for l in LinkExtractor(allow_domains='example.com').extract_links(response)]
    print(set(urls))  # sanity check

这就是LinkExtractor的真正目的(我猜)。

顺便说一句,请记住,您可以在Internet中找到的大多数Scrapy示例(包括Stackoverflow)都是指与Python 3不完全兼容的早期版本。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41923550

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档