嗨我想通过查看页面抓取一些内容,这些内容在页面源代码中看不到。 一个示例网站:https://bangumi.bilibili.com/anime/index#p=1&v=1&area=2&stat=0&y=0&q=0&tag=&t=1&sort=0 (我想获得动漫信息)Scrapy源代码中的隐藏内容
任何人都可以给我任何暗示做到这一点?
感谢
嗨我想通过查看页面抓取一些内容,这些内容在页面源代码中看不到。 一个示例网站:https://bangumi.bilibili.com/anime/index#p=1&v=1&area=2&stat=0&y=0&q=0&tag=&t=1&sort=0 (我想获得动漫信息)Scrapy源代码中的隐藏内容
任何人都可以给我任何暗示做到这一点?
感谢
由于本页面上的所有信息都是通过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'}
非常感谢!我以同样的方式尝试! –
不客气,我很高兴能帮到你。 – vold
看来网站动态加载的内容,为此你需要完全渲染页面(这也意味着你必须解析JavaScript的)。 由于这个事实,你应该考虑使用无头浏览器。
谢谢,我会查找一些关于如何获得javascript结果的信息。 –
你能提供一个你想从这个页面中提取的数据的例子吗?此网站使用Js,例如[其中一个json文件](https://bangumi.bilibili.com/web_api/season/index_global?page=1&page_size=20&version=1&is_finish=0&start_year=0&tag_id=&index_type=1&index_sort=0&area=2&quarter= 0)该页面用于填充其内容。尝试在浏览器中学习“网络”选项卡,并检测其他请求。 – vold
谢谢!这json文件正是我想要的,更确切地说,是“title”“url”的信息。我会看看网络标签,并想知道是否有办法自动从所有页面获取信息? –