在源代码中扫描隐藏的内容

时间:2017-07-04 08:05:05

标签: python scrapy

您好我想通过查看页面来抓取我在页面源代码中看不到的一些内容。 示例网站:https://bangumi.bilibili.com/anime/index#p=1&v=1&area=2&stat=0&y=0&q=0&tag=&t=1&sort=0 (我想获得动漫信息)

任何人都可以给我任何暗示吗?

由于

2 个答案:

答案 0 :(得分:0)

网站似乎动态加载内容,因此您需要完全呈现页面(这也意味着您必须解析JavaScript)。 因此,您应该考虑使用无头浏览器。

答案 1 :(得分:0)

由于此页面上的所有信息都是通过json填充的,因此您可以直接请求json端点,如果您使用for loop,则可以提取所有需要的信息。

import scrapy
import json


class BiliSpider(scrapy.Spider):
    name = "bilispider"

    def start_requests(self):
        url = "https://bangumi.bilibili.com/web_api/season/index_global?page={}&page_size=20&version=1&is_finish=0&start_year=0&tag_id=&index_type=1&index_sort=0&area=2&quarter=0"
        for i in range(1, 99):
            yield scrapy.Request(url.format(i), callback=self.parse)

    def parse(self, response):
        res = json.loads(response.text)
        item = dict()
        for el in res['result']['list']:
            item['title'] = el['title']
            item['url'] = el['url']
            yield item

# Output:
# 2017-07-05 09:11:46 [scrapy.core.scraper] DEBUG: Scraped from <200 https://bangumi.bilibili.com/web_api/season/index_glo
# bal?page=96&page_size=20&version=1&is_finish=0&start_year=0&tag_id=&index_type=1&index_sort=0&area=2&quarter=0>
# {'title': '激斗战车(国语)', 'url': 'http://bangumi.bilibili.com/anime/5380'}
# 2017-07-05 09:11:46 [scrapy.core.scraper] DEBUG: Scraped from <200 https://bangumi.bilibili.com/web_api/season/index_glo
# bal?page=96&page_size=20&version=1&is_finish=0&start_year=0&tag_id=&index_type=1&index_sort=0&area=2&quarter=0>
# {'title': '银河漂流VIFAM', 'url': 'http://bangumi.bilibili.com/anime/2437'}