Dưới đây là một con nhện dụ tôi đã viết cho một dự án của tôi:
from scrapy.contrib.spiders import CrawlSpider
from scrapy.selector import HtmlXPathSelector
from scrapy.http import Request
from yoMamaSpider.items import JokeItem
from yoMamaSpider.striputils import stripcats, stripjokes
import re
class Jokes4UsSpider(CrawlSpider):
name = 'jokes4us'
allowed_domains = ['jokes4us.com']
start_urls = ["http://www.jokes4us.com/yomamajokes/"]
def parse(self, response):
hxs = HtmlXPathSelector(response)
links = hxs.select('//a')
for link in links:
url = ''.join(link.select('./@href').extract())
relevant_urls = re.compile(
'http://www\.jokes4us\.com/yomamajokes/yomamas([a-zA-Z]+)')
if relevant_urls.match(url):
yield Request(url, callback=self.parse_page)
def parse_page(self, response):
hxs = HtmlXPathSelector(response)
categories = stripcats(hxs.select('//title/text()').extract())
joke_area = hxs.select('//p/text()').extract()
for joke in joke_area:
joke = stripjokes(joke)
if len(joke) > 15:
yield JokeItem(joke=joke, categories=categories)
Tôi nghĩ rằng phương pháp phân tích cú pháp là những gì bạn đang theo sau: Nó nhìn vào mọi liên kết trên trang start_urls, sau đó sử dụng một số regex để quyết định xem đó có phải là related_url (tức là url tôi muốn xóa), nếu nó có liên quan - nó cạo trang bằng cách sử dụng Yêu cầu lợi nhuận (url, callback = self.parse_page), gọi phương thức parse_page.
Đây có phải là loại điều bạn đang theo dõi không?
Nguồn
2013-12-16 00:52:01
Tôi không sử dụng giấy phép, nhưng [tài liệu] (http://doc.scrapy.org/en/latest/intro/tutorial.html) rất rộng và bao gồm đầy đủ thông tin để bạn thực hiện việc này. Có vẻ như bạn cần phải viết [link extractor] (http://doc.scrapy.org/en/latest/topics/link-extractors.html) để nhận các liên kết trang 'B' từ trang' A' và sau đó phân tích cú pháp trang 'B' để tìm url trang' C'. Hãy thử làm điều đó và sau đó đăng một câu hỏi cụ thể với mã nếu bạn có vấn đề. – ChrisP
Xin lỗi, nhưng tài liệu thực sự rất tệ cho người mới bắt đầu. Có rất ít và khá ví dụ vô dụng, và bạn giới thiệu trở lại trang web tài liệu là không giúp đỡ bất cứ ai. – not2qubit