Я закодировал паук ползать сайт после регистрацииScrapy рекурсивный сайт ползать после авторизации
import scrapy
from scrapy.selector import HtmlXPathSelector
from scrapy.http import FormRequest, Request
from scrapy.selector import Selector
from scrapy.loader import ItemLoader
from scrapy.contrib.spiders import CrawlSpider,Rule
from scrapy.contrib.linkextractors import LinkExtractor
class LoginSpider(scrapy.Spider):
name = "login"
allowed_domains = ["mydomain.com"]
start_urls = ['https://login.mydomain.com/login']
rules = [Rule(LinkExtractor(allow=('//a[contains(text(), "Next")]'), restrict_xpaths=('//a[contains(text(), "Previous")]',)), 'parse_info')]
def parse(self, response):
return [FormRequest.from_response(response,
formdata={"username":"myemail","password":"mypassword"},
callback=self.parse_info, dont_filter=True)]
def parse_info(self, response):
items = []
for tr in range(1, 5):
xpath = "/html/body/table/tbody/tr[%s]/td[1]/text()" % tr
td1 = Selector(response=response).xpath(xpath).extract()
item = MyItem()
item['col1'] = td1
items.append(item)
return items
И HTML-
<html>
<table>
<tbody>
<tr><td>Row 1</td></tr>
<tr><td>Row 2</td></tr>
</tbody>
</table>
<div><a href="?page=2">Next</a></div>
<div><a href="#">Previous</a></div>
</html>
Так что паук делает это автоматически войти в систему пользователя с логином страницу и перенаправить на главную страницу с помощью html выше.
Теперь я хочу, чтобы я очистил следующую страницу после первой страницы, используя выше описанный скрипт python.
Я прочитал о документации по Scrapy о реализации правил, но у меня нет успеха, чтобы она работала. Пожалуйста, помогите мне, я застрял на этом больше дня. Спасибо.
Благодарим Вас за ответ, теперь я получаю эту ошибку, когда я следую за сценарий после того, как я бегу скребок: 'SyntaxError:«возвращение»с аргументом в generator' – PinoyPal
Пожалуйста, попробуйте использовать 'yield item' вместо создания списка и возврата этого. Я отредактировал свой ответ с этими изменениями. –
Отлично! Ты просто спас мне день. Благодаря :) – PinoyPal