簡體   English   中英

當我瀏覽循環時,這個網頁是如何阻止我的,而不是直接訪問它時?

[英]How is this webpage blocking me when I scrape through a loop but not when I access it directly?

我試圖刮一組網頁。 當我直接從一個網頁上抓取時,我可以訪問html。 但是,當我遍歷pd數據幀來刮取一組網頁時,即使是只有一行的數據框,我看到一個截斷的html,無法提取我想要的數據。

迭代1行的數據幀:
url = "https://zbmath.org/authors/?q=robert+mccoy"
r = requests.get(url)
html = BeautifulSoup(r.text)
html=str(html)
frequency = re.findall('Joint\sPublications">(.*?)</a>', html)
freq.append(frequency)

print(freq)

[[]]

直接訪問網頁。 相同的代碼,但現在沒有阻止。
 url = "https://zbmath.org/authors/?q=robert+mccoy" r = requests.get(url) html = BeautifulSoup(r.text) html=str(html) frequency = re.findall('Joint\\sPublications">(.*?)</a>', html) freq.append(frequency) print(freq) 

[[],['10','8','6','5','3','3','2','2','2','2','2',' 1','1','1','1','1','1','1','1','1','1','1','1','1' ,'1']]

如何循環瀏覽多個網頁但不會被阻止?

Iterrows返回一個(索引,(列))元組,因此解決方案是稍微區別地解析它:

for _,(first_name, last_name) in names.iterrows():
    url = "https://zbmath.org/authors/?q={}+{}".format(first_name, 
    last_name)
    r = requests.get(url)
    html = BeautifulSoup(r.text)
    html=str(html)
    frequency = re.findall('Joint\sPublications">(.*?)</a>', html)
    freq.append(frequency)

print(freq)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM