Scrapy - Как указать href внутри тега ссылки, чтобы получить все страницы и документы - PullRequest
0 голосов
/ 02 марта 2020

Я хочу получить все страницы, которые содержат проблемы и, следовательно, все статьи этого научного c журнала (https://www.sciencedirect.com/journal/phytochemistry/issues?page=1).

Одна из проблем в том, что когда я пытаюсь получить URL-адрес веб-сайта в оболочке scrapy, чтобы попытаться выяснить, как указать, как получить эти страницы, я получаю ошибку 403.

Часть, содержащая ссылку href, которую я хочу перейти к следующей странице (которая находится внутри 'script'):

<link rel="next" href="https://www.sciencedirect.com/journal/phytochemistry/issues?page=2" data-react-helmet="true">

Код, который я написал до сих пор, довольно прост, и мне интересно, нужно ли мне добавить заголовок, чтобы избавиться из проблемы 403:

import scrapy


class PhytochemistrySpider(scrapy.Spider):
    name = "phytochemistry"
    start_urls = ['https://www.sciencedirect.com/journal/phytochemistry/issues?page=1']

Как упомянуто выше, я хотел бы очистить все ссылки href, которые также содержат проблемы, но я хотел бы получить некоторую помощь в получении страниц и решении 403 проблема первая.

Как я мог бы продолжать писать код, чтобы это сделать?

Заранее благодарю и извиняюсь за любые очевидные ошибки, исходящие от python и начинающего врача.

1 Ответ

0 голосов
/ 03 марта 2020

Попробуйте использовать некоторые пользовательские агенты,

>>> import requests
>>> requests.get(url='https://www.sciencedirect.com/journal/phytochemistry/issues?page=1')
<Response [403]>
>>> headers = {'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.102 Safari/537.36'}
>>> requests.get(url='https://www.sciencedirect.com/journal/phytochemistry/issues?page=1', headers=headers)
<Response [200]>

примените то же самое в запросе scrapy.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...