Так что в основном я хочу использовать Scrapy.org, чтобы очистить форум. Проблема, с которой я сталкиваюсь, заключается в том, что ссылка на каждый поток несколько вдоль этой строки http://mywebsite.com/forum/My-Thread-Name-t213.html Теперь, если я пытаюсь ввести только http://mywebsite.com/forum/t213.html, это не сработает, оно не показывает тему с этим идентификатором, поэтому я действительно не знаю как я мог бы генерировать имя потока и идентификатор каждой темы, чтобы иметь возможность очистить его. Я бы очень признателен за помощь в этом, спасибо заранее!Как очистить несколько нечетный URL с помощью Scrapy
ответ
В отсутствие фактического URL-адреса для тестирования я не могу быть абсолютно уверен, что это сработает. По существу вам нужно использовать регулярное выражение в правиле CrawlSpider
, которое начинается с вашего базового URL-адреса и совпадает с ним, плюс любая строка, за которой следует -t
, плюс любое число, а затем, наконец, .html
.
from scrapy.contrib.spiders import CrawlSpider, Rule
from scrapy.selector import HtmlXPathSelector
from scrapy.contrib.linkextractors.sgml import SgmlLinkExtractor
class ThreadSpider(CrawlSpider):
name = "mywebsite"
allowed_domains = ["mywebsite.com"]
start_urls = ["http://mywebsite.com/forum"]
rules = [Rule(SgmlLinkExtractor(allow = ('/[^/]+-t\d+\.html')), follow=True,
callback='parse_item'),]
def parse_item(self, response):
hxs = HtmlXPathSelector(response)
print "We're scraping %s" % response.url
# do something with the hxs object
Глядя снова на это, я обнаружил, что сообщения могут быть доступны по этой ссылке http://freakz.ro/forum/view-post-3382479.html, но опять же, есть удаленные сообщения. Число идет от 0 o inf, так что да, это диапазон. Я думаю, что лучше использовать это, но тогда одна и та же страница может быть очищена 15 раз (# posts/page). – moonbas3
Являются ли идентификаторы потоков в некотором диапазоне, например: t001 - t300? – Talvalin
Кроме того, не могли бы вы привести конкретный пример URL-адреса нити, пожалуйста? – Talvalin
Фактическим адресом будет http://freakz.ro/forum/Spam-Akyzor-Dkill-t251680.html. Идентификаторы потоков находятся в диапазоне от 0 до x вперед, но некоторые из них должны быть удалены, поэтому должны быть идентификаторы, возвращающие страницу с ошибкой, если это помогает. – moonbas3