亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Selenium & Beautiful Soup 抓取返回了意想不到的結果

Selenium & Beautiful Soup 抓取返回了意想不到的結果

白衣染霜花 2023-05-23 10:34:52
美國專利商標局網站提供每周更新的公共數據。每次他們發布新數據時,他們都會以上周的“增量數據”形式發布。我正在嘗試使用 python 下載這些數據,這樣我就不必每周都手動下載了。有一些奇怪的事情正在發生:首先,browser.page_source保留 html(但不是正確的 - 我檢查過)。但是當我將該 html(作為字符串)傳遞給 BeatifulSoup 時,它soup.current_data是空的。delta其次,返回的 html 不是完整的 html,并且根本不包含該部分,即使它位于瀏覽器的站點 html 中:關于如何下載該文件的任何想法?我需要最終調用deltaJsonDownload()js 函數。重現代碼:from bs4 import BeautifulSoupfrom selenium import webdriverurl = 'https://ped.uspto.gov/peds/'browser = webdriver.PhantomJS(executable_path='/usr/bin/phantomjs')browser.get(url)html = browser.page_sourcesoup = BeautifulSoup(browser.page_source)assert('delta' in browser.page_source)
查看完整描述

1 回答

?
絕地無雙

TA貢獻1946條經驗 獲得超4個贊

當您分析網站網絡調用時,它會發出 ajax 請求以獲取要下載的數據的所有鏈接。


import requests


res = requests.get("https://ped.uspto.gov/api/")


data = res.json()


print(data)

輸出:


{'message': None,

 'helpText': '{}',

 'xmlDownloadMetadata': [{'lastUpdated': 'Sat 15 Aug 2020 01:30:57-0400',

   'sizeInBytes': 10429068701,

   'fileName': 'pairbulk-delta-20200815-xml',

   'updatedFile': False},

  {'lastUpdated': 'Sun 09 Aug 2020 10:20:10-0400',

   'sizeInBytes': 100685778,

   'fileName': '1900-1919-pairbulk-full-20200809-xml',

   'updatedFile': False},

  {'lastUpdated': 'Sun 09 Aug 2020 10:20:14-0400',

   'sizeInBytes': 13877,

   'fileName': '1920-1939-pairbulk-full-20200809-xml',

   'updatedFile': False},

  {'lastUpdated': 'Sun 09 Aug 2020 10:20:15-0400',

   'sizeInBytes': 93016,

   'fileName': '1940-1959-pairbulk-full-20200809-xml',

   'updatedFile': False},

  {'lastUpdated': 'Sun 09 Aug 2020 10:20:15-0400',

   'sizeInBytes': 82353484,

   'fileName': '1960-1979-pairbulk-full-20200809-xml',

   'updatedFile': False},

  {'lastUpdated': 'Sun 09 Aug 2020 10:20:16-0400',

   'sizeInBytes': 5019098918,

   'fileName': '1980-1999-pairbulk-full-20200809-xml',

   'updatedFile': False},

  {'lastUpdated': 'Sun 09 Aug 2020 10:20:46-0400',

   'sizeInBytes': 33231977060,

   'fileName': '2000-2019-pairbulk-full-20200809-xml',

   'updatedFile': False},

  {'lastUpdated': 'Sun 09 Aug 2020 10:23:23-0400',

   'sizeInBytes': 24313575,

   'fileName': '2020-2020-pairbulk-full-20200809-xml',

   'updatedFile': False}],

 'jsonDownloadMetadata': [{'lastUpdated': 'Sat 15 Aug 2020 03:08:00-0400',

   'sizeInBytes': 5957650088,

   'fileName': 'pairbulk-delta-20200815-json',

   'updatedFile': False},

  {'lastUpdated': 'Sun 09 Aug 2020 15:18:23-0400',

   'sizeInBytes': 66467976,

   'fileName': '1900-1919-pairbulk-full-20200809-json',

   'updatedFile': False},

  {'lastUpdated': 'Sun 09 Aug 2020 15:18:25-0400',

   'sizeInBytes': 10100,

   'fileName': '1920-1939-pairbulk-full-20200809-json',

   'updatedFile': False},

  {'lastUpdated': 'Sun 09 Aug 2020 15:18:27-0400',

   'sizeInBytes': 69891,

   'fileName': '1940-1959-pairbulk-full-20200809-json',

   'updatedFile': False},

  {'lastUpdated': 'Sun 09 Aug 2020 15:18:29-0400',

   'sizeInBytes': 54076774,

   'fileName': '1960-1979-pairbulk-full-20200809-json',

   'updatedFile': False},

  {'lastUpdated': 'Sun 09 Aug 2020 15:18:31-0400',

   'sizeInBytes': 3009216952,

   'fileName': '1980-1999-pairbulk-full-20200809-json',

   'updatedFile': False},

  {'lastUpdated': 'Sun 09 Aug 2020 15:18:46-0400',

   'sizeInBytes': 18853619536,

   'fileName': '2000-2019-pairbulk-full-20200809-json',

   'updatedFile': False},

  {'lastUpdated': 'Sun 09 Aug 2020 15:20:30-0400',

   'sizeInBytes': 17518389,

   'fileName': '2020-2020-pairbulk-full-20200809-json',

   'updatedFile': False}],

 'links': [{'rel': 'swagger-api-docs', 'href': '/api-docs'}]}

解析 json 并使用這些鏈接,您可以輕松下載您要查找的文件。但我會說這些文件非常大,最好在請求中使用流式下載。


您要查找的鏈接是中的第一個元素data["jsonDownloadMetadata"]


為了獲得可下載的鏈接,解析 json


data = res.json()


for links in data["jsonDownloadMetadata"]:

    print(f"https://ped.uspto.gov/api/full-download?fileName={links['fileName']}")

輸出:


https://ped.uspto.gov/api/full-download?fileName=pairbulk-delta-20200815-json

https://ped.uspto.gov/api/full-download?fileName=1900-1919-pairbulk-full-20200809-json

https://ped.uspto.gov/api/full-download?fileName=1920-1939-pairbulk-full-20200809-json

https://ped.uspto.gov/api/full-download?fileName=1940-1959-pairbulk-full-20200809-json

https://ped.uspto.gov/api/full-download?fileName=1960-1979-pairbulk-full-20200809-json

https://ped.uspto.gov/api/full-download?fileName=1980-1999-pairbulk-full-20200809-json

https://ped.uspto.gov/api/full-download?fileName=2000-2019-pairbulk-full-20200809-json

https://ped.uspto.gov/api/full-download?fileName=2020-2020-pairbulk-full-20200809-json



查看完整回答
反對 回復 2023-05-23
  • 1 回答
  • 0 關注
  • 118 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號