Scrapy-如何在链接标记中指定href以获取所有页面和论文

时间:2020-03-02 14:28:49

标签: python scrapy

我想获取包含问题的所有页面,并因此获得本科学期刊(https://www.sciencedirect.com/journal/phytochemistry/issues?page=1)的所有论文。

问题之一是,当我尝试在scrapy shell上获取网站的网址以尝试发现如何指定如何获取这些页面时,出现403错误。

包含我要转到下一页的href链接的部分是(位于“脚本”内部):

<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 :(得分:0)

尝试使用某些用户代理,

>>> 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]>

在刮scrap请求中同样应用。