Python 什么是浏览网页的最好(最快)方法?
我试图从谷歌专利中搜集数据,发现执行时间太长了。我怎样才能提高速度?运行8000项专利已经花了7个小时 这是一个专利的例子 我需要从下表中获取数据并将其写入csv文件。我认为瓶颈在于Python 什么是浏览网页的最好(最快)方法?,python,selenium,web-scraping,beautifulsoup,Python,Selenium,Web Scraping,Beautifulsoup,我试图从谷歌专利中搜集数据,发现执行时间太长了。我怎样才能提高速度?运行8000项专利已经花了7个小时 这是一个专利的例子 我需要从下表中获取数据并将其写入csv文件。我认为瓶颈在于WebDriverWait(driver,10)。直到(EC.presence\u of_元素位于((By.XPATH,“//div[@class='table style scope patent result']))) 这是必要的还是我可以使用find_elements_by_css_选择器并检查是否返回任何内容
WebDriverWait(driver,10)。直到(EC.presence\u of_元素位于((By.XPATH,“//div[@class='table style scope patent result'])))
这是必要的还是我可以使用find_elements_by_css_选择器并检查是否返回任何内容
#...
from selenium.webdriver.support import expected_conditions as EC
#...
## read file of patent numbers and initiate chrome
url = "https://patents.google.com/patent/US6403086B1/en?oq=US6403086B1"
for x in patent_number:
#url = new url with new patent number similar to above
try:
driver.get(url)
driver.set_page_load_timeout(20)
except:
#--write to csv
continue
if "404" in driver.title: #patent number not found
#--write to csv
continue
try:
WebDriverWait(driver, 10).until(
EC.presence_of_element_located((By.XPATH, "//div[@class='table style-scope patent-result']"))
)
except:
#--write to csv
continue
## rest of code to get data from tables and write to csv
有没有更有效的方法来查找专利页上是否存在这些表格?或者如果我使用BeautifulSoup会有什么不同
我对WebSurvivin很陌生,所以任何帮助都是非常值得赞赏的:(
< p>)不确定你在跟踪哪些表,但是考虑到你可以使用请求和熊猫来抓取表,以及会话来重新使用连接。import requests
from bs4 import BeautifulSoup as bs
import pandas as pd
codes = ['US6403086B1','US6403086B1'] #patent numbers to come from file
with requests.Session() as s:
for code in codes:
url = 'https://patents.google.com/patent/{}/en?oq={}'.format(code, code)
r = s.get(url)
tables = pd.read_html(str(r.content))
print(tables) #example only. Remove later
#here would add some tidying up to tables e.g. dropNa rows, replace NaN with '' ....
# rather than print... whatever steps to store info you want until write out
不确定你在哪一个表之后,但是考虑你可以使用请求和熊猫抓住表,以及会话重用连接。< /P>
import requests
from bs4 import BeautifulSoup as bs
import pandas as pd
codes = ['US6403086B1','US6403086B1'] #patent numbers to come from file
with requests.Session() as s:
for code in codes:
url = 'https://patents.google.com/patent/{}/en?oq={}'.format(code, code)
r = s.get(url)
tables = pd.read_html(str(r.content))
print(tables) #example only. Remove later
#here would add some tidying up to tables e.g. dropNa rows, replace NaN with '' ....
# rather than print... whatever steps to store info you want until write out
你要两张桌子吗?专利引用和非专利引用?第页所有的桌子?你要两张桌子吗?专利引用和非专利引用?第页的所有表?我想从所有表中获取数据。我在试着理解BeautifulSoup和Selenium的区别。在这个用例中,BeautifulSoup比selenium有什么优势?我什么时候可以使用一个而不是另一个呢?selenium允许您自动化浏览器。。。javascript可以在动态加载内容的情况下在页面上呈现,您可以与站点控件(例如按钮等)交互。请求速度要快得多,但由于没有浏览器,您将失去与网页交互的能力。此外,javascript加载的内容也不会出现。在您的情况下,请求速度更快。然后使用BeautifulSoup和lxml解析响应对象内容。上面的答案将打印所有表。你可以决定用它们做什么。每个表都作为返回列表中的数据框返回。谢谢!有没有一种方法也能抓住表格的标题?例如,我需要表格前面的“专利引用(1)”。我想用这些标题来确定存储某些表数据的位置。我想从所有表中获取数据。我在试着理解BeautifulSoup和Selenium的区别。在这个用例中,BeautifulSoup比selenium有什么优势?我什么时候可以使用一个而不是另一个呢?selenium允许您自动化浏览器。。。javascript可以在动态加载内容的情况下在页面上呈现,您可以与站点控件(例如按钮等)交互。请求速度要快得多,但由于没有浏览器,您将失去与网页交互的能力。此外,javascript加载的内容也不会出现。在您的情况下,请求速度更快。然后使用BeautifulSoup和lxml解析响应对象内容。上面的答案将打印所有表。你可以决定用它们做什么。每个表都作为返回列表中的数据框返回。谢谢!有没有一种方法也能抓住表格的标题?例如,我需要表格前面的“专利引用(1)”。我想使用这些标题来确定存储某些表数据的位置。