BeautifulSoup / Scrapy:与Firefox中查看的源HTML不同的BeautifulSoup html

时间:2018-07-31 19:54:43

标签: python beautifulsoup scrapy

我是Python,BeautifulSoup和Scrapy的新手,所以我不确定100%如何描述我遇到的问题。

我想抓取您可以看到in this image的“下一个”按钮提供的网址,它位于图像链接“ tiff”或“ jpeg”旁边。

问题在于,“下一页”(以及后续页面中的“上一页”)链接似乎没有通过我提供给scrapy的网址来展示。当我请朋友检查url时,她告诉我没有看到链接。我通过打印与标签ID'desciption'相关的bs对象来确认这一点:

description = soup.find('div', {'id':'description'} )

因为我是从LOC网站上的搜索生成此页面的,所以我认为我必须将某些内容传递给我的蜘蛛以指示搜索参数。我通过更改引荐来源尝试了建议的here解决方案,但仍然无法使用:

DEFAULT_REQUEST_HEADERS = {
        'Referer': 'www.loc.gov/pictures/collection/fsa/search/?co=fsa&q=1935&st=grid'
        }

运行Spider时,我得到以下输出日志,确认引荐来源网址已更新:

2018-07-31 15:41:37 [scrapy.core.engine] DEBUG: Crawled (200) <GET https://www.loc.gov/robots.txt> (referer: www.loc.gov/pictures/collection/fsa/search/?co=fsa&amp;q=1935&amp;st=grid)
2018-07-31 15:41:37 [scrapy.core.engine] DEBUG: Crawled (200) <GET http://www.loc.gov/pictures/resource/fsa.8a07028/?co=fsa> (referer: www.loc.gov/pictures/collection/fsa/search/?co=fsa&amp;q=1935&amp;st=grid)

如果有人可以提供帮助,我将非常感激。

1 个答案:

答案 0 :(得分:0)

AFAICT,该站点使用会话来存储您的搜索服务器端的历史记录。

搜索是从类似yours的URL开始的。

但是,随后访问图像URL时,您的会话处于活动状态(通过cookie),并且该网站呈现下一个/后退链接。如果未找到会话,则不会(但是您仍然可以看到该页面)。您可以通过在初始搜索后删除Cookie来证明这一点,并在刷新后观看它消失……

您需要告诉Scrapy首先进入搜索URL,然后搜寻结果,并确保cookie middleware is enabled