gpt4 book ai didi

python - 为什么我在尝试从 Google Scholar 抓取数据时会得到重复的输出?

转载 作者:太空宇宙 更新时间:2023-11-03 18:45:02 25 4
gpt4 key购买 nike

我正在尝试从 Google Scholar 的搜索结果中抓取 PDF 链接。我尝试根据 URL 的更改设置页面计数器,但在前八个输出链接之后,我得到重复的链接作为输出。

#!/usr/bin/env python
from mechanize import Browser
from BeautifulSoup import BeautifulSoup
from bs4 import BeautifulSoup
import urllib2
import requests


#modifying the url as per page
urlCounter = 0
while urlCounter <=30:
urlPart1 = "http://scholar.google.com/scholar?start="
urlPart2 = "&q=%22entity+resolution%22&hl=en&as_sdt=0,4"
url = urlPart1 + str(urlCounter) + urlPart2
page = urllib2.Request(url,None,{"User-Agent":"Mozilla/5.0 (X11; U; Linux i686) Gecko/20071127 Firefox/2.0.0.11"})
resp = urllib2.urlopen(page)
html = resp.read()
soup = BeautifulSoup(html)
urlCounter = urlCounter + 10

recordCount = 0
while recordCount <=9:
recordPart1 = "gs_ggsW"
finRecord = recordPart1 + str(recordCount)
recordCount = recordCount+1

#printing the links
for link in soup.find_all('div', id = finRecord):
linkstring = str(link)
soup1 = BeautifulSoup(linkstring)
for link in soup1.find_all('a'):
print(link.get('href'))

最佳答案

更改代码中的以下行:

finRecord = recordPart1 + str(recordCount)

finRecord = recordPart1 + str(recordCount+urlCounter-10)

真正的问题:第一页的 div id 是 gs_ggsW[0-9],但第二页的 id 是 gs_ggsW[10-19]。这么漂亮的汤在第二页上找不到链接。

Python 的变量作用域可能会让使用其他语言(例如 Java)的人感到困惑。执行下面的for循环后,变量link仍然存在。因此该链接引用了第一页的最后一个链接。

for link in soup1.find_all('a'):
print(link.get('href'))
<小时/>

更新:

Google 可能不提供某些论文的 pdf 下载链接,因此您无法使用 id 来匹配每篇论文的链接。您可以使用 css 选择器将所有链接匹配在一起。

soup = BeautifulSoup(html)
urlCounter = urlCounter + 10
for link in soup.select('div.gs_ttss a'):
print(link.get('href'))

关于python - 为什么我在尝试从 Google Scholar 抓取数据时会得到重复的输出?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19722340/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com