Я написал простой сканер в Scrapy 1.5 на Python3 и собираю сообщения и их содержимое.
import scrapy
from scrapy.spiders import CrawlSpider, Rule
from scrapy.linkextractors import LinkExtractor
class DailyStrengthSpider(CrawlSpider):
name = 'daily_strength'
allowed_domains = ['dailystrength.org']
start_urls = ['https://www.dailystrength.org/search?query=avastin/']
rules = (
Rule(LinkExtractor(restrict_xpaths = '//*[@class="newsfeed__title-block"]/h2/a/@href'),follow = True),
Rule(LinkExtractor(allow = r'/group/[a-zA-z]\-/discussion/[a-zA-z0-9]\_\-',callback = 'parse_post'))
)
Здесь я указываю URL-адреса, которые должны быть разрешены в приведенной выше строке. Я получил сообщение об ошибке
TypeError: init () получил неожиданный аргумент ключевого слова 'callback'
Я проверил синтаксис в учебниках.
def parse_post(self,response):
user = response.xpath('//*[@class="newsfeed__posted-by"]/a/text()').extract_first()
time = response.xpath('//*[@class="newsfeed__item-time"]/text()').extract_first()
full_post = response.xpath('//*[@class="posts__content"]/text()').extract_first()
comment_users = response.xpath('//*[@class="comments__name"]/a/text()').extract()
comments = response.xpath('//*[@class="comments__comment-text"]/text()').extract()
yield {"UserName":user,"Time":time,"Post":full_post}