簡體   English   中英

Scrapy中的空.json文件

[英]Empty .json File in Scrapy

我寫了這只非常短的蜘蛛,轉到“美國新聞”鏈接,並列出了那里列出的大學的名稱。

#!/usr/bin/python
# -*- coding: utf-8 -*-

import scrapy

class CollegesSpider(scrapy.Spider):
    name = "colleges"
    start_urls = [
        'http://colleges.usnews.rankingsandreviews.com/best-colleges/rankings/national-universities?_mode=list&acceptance-rate-max=20'
    ]

    def parse(self, response):
        for school in response.css('div.items'):
            yield {
                'name': school.xpath('//*[@id="view-1c4ddd8a-8b04-4c93-8b68-9b7b4e5d8969"]/div/div[1]/div[1]/h3/a').extract_first(),
            }

但是,當我運行此蜘蛛並要求將名稱存儲在名為school.json的文件中時,該文件顯示為空白。 我究竟做錯了什么?

得到它了! 這是因為機器人檢測。

編碼

>>> r = requests.get('http://colleges.usnews.rankingsandreviews.com/best-colleges/rankings/national-universities?_mode=list&acceptance-rate-max=20', headers={'User-Agent':'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.87 Safari/537.36'})
>>> r.status_code
200

然后,您將擁有所需的所有內容。 進行所需的任何解析或提取。 在Scrapy中,編碼標頭的過程應該非常相似。

帶有標題的scrapy文檔請求

Chrome用戶代理

Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.87 Safari/537.36

我在手機上,所以不記得確切的變量名,但是應該是robots_follow

將其設置為False

您稱為起始url的頁面不包含ID為view-1c4ddd8a-8b04-4c93-8b68-9b7b4e5d8969任何元素-看起來非常獨特,對於通用的XPath表達式似乎不是一個好選擇。 我建議使用類似於school.xpath('.//div[@data-view="colleges-search-results-card"]//h3/a/text()').extract()

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM