嗨我想通過查看頁面抓取一些內容,這些內容在頁面源代碼中看不到。 一個示例網站: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」的信息。我會看看網絡標籤,並想知道是否有辦法自動從所有頁面獲取信息? –