Scrapy中LinkExtractor()教程
Scrapy是一个用于爬取网页的Python框架。它提供了一些方便的工具,帮助我们在网页中提取信息。LinkExtractor是Scrapy中一个非常重要的类,它用于从网页中提取链接。
LinkExtractor类有很多可调用的参数,用于配置链接提取的行为。下面是一些常用的参数及其说明:
1. allow:一个正则表达式或一个正则表达式的列表,用于匹配链接的URL,只有匹配的URL才会被提取。
2. deny:一个正则表达式或一个正则表达式的列表,用于排除链接的URL,匹配到的URL将被忽略。
3. allow_domains:一个字符串或一个字符串的列表,用于指定提取的链接的域名,只有在指定的域名下的链接才会被提取。
4. deny_domains:一个字符串或一个字符串的列表,用于指定排除的链接的域名,指定的域名下的链接将被忽略。
5. restrict_xpaths:一个XPath表达式的列表,用于筛选需要提取的链接,只有匹配到XPath表达式的链接才会被提取。
6. restrict_css:一个CSS选择器的列表,用于筛选需要提取的链接,只有匹配到CSS选择器的链接才会被提取。
下面是一个使用LinkExtractor的示例代码:
from scrapy.linkextractors import LinkExtractor
html = """
<html>
<body>
<a href="http://example.com/page1.html">Page 1</a>
<a href="http://example.com/page2.html">Page 2</a>
<a href="http://example.com/page3.html">Page 3</a>
</body>
</html>
"""
# 创建一个LinkExtractor对象,指定提取的链接不包含/example.com/
le = LinkExtractor(deny_domains='example.com')
# 从HTML中提取链接
links = le.extract_links(html)
# 输出提取到的链接
for link in links:
print(link.url)
以上代码的输出结果是:
http://example.com/page1.html http://example.com/page2.html http://example.com/page3.html
在这个例子中,我们创建了一个LinkExtractor对象,并且指定了提取链接时需要排除example.com域名下的链接。然后,我们从给定的HTML中提取链接,并将链接逐个输出。
在实际的爬虫项目中,我们可以将LinkExtractor与Spider结合使用,从网页中提取链接,并根据链接构建请求,继续爬取其他页面。这样我们可以实现网站的全站爬取。
总之,Scrapy中的LinkExtractor类是一个强大的工具,可以方便地从网页中提取链接。在爬虫项目中,合理使用LinkExtractor可以帮助我们高效地抓取所需的信息。
