我有這個代碼來抓取不同網站的所有部分,這些部分包含帶有“transparencia”一詞的 web 部分。
但是,我不知道為什么當代碼使用單詞過濾器列印所有 url 時,它會重復 n 次。而我只需要其中之一。
輸入
from bs4 import BeautifulSoup
import lxml
import pandas as pd
from tqdm import tqdm_notebook
import requests
listUrl = ["http://agricultura.gencat.cat","http://cultura.gencat.cat",
"https://dretssocials.gencat.cat","http://economia.gencat.cat",
"https://educacio.gencat.cat","http://empresa.gencat.cat",
"http://interior.gencat.cat","http://justicia.gencat.cat",
"https://presidencia.gencat.cat","https://salutweb.gencat.cat",
"https://politiquesdigitals.gencat.cat","https://territori.gencat.cat"]
herfList=[]
codiNum = 0
keyWord = "transparencia"
def parse_url(url):
response = requests.get(url)
content = response.content
parsed_response = BeautifulSoup(content, "lxml")
return parsed_response
def extract_post_data (url):
soup_url = parse_url(url)
try:
herf_transparencia = soup_url.find_all('a', href =True)
except:
herf_transparencia = ""
dadesUrlDic= {"herf transparencia": herf_transparencia}
return dadesUrlDic
for url in listUrl:
soup = parse_url(url)
referenceHref = soup.find_all(class_= "NG-megamenu__nav-link-self", href= True)
for href in referenceHref:
if href.text:
herfList.append(href['href'])
for i in herfList:
if keyWord.lower() in i.lower():
urlWithKeyWord = url i
print(urlWithKeyWord)
輸出
例如,在此輸出中,世界為“transparencia”的 url 為每個 web 部分重復和增加。但是,當沒有更多網頁部分時,代碼會繼續列印更多帶有所有 url 的行。
http://agricultura.gencat.cat/ca/departament/transparencia-i-bon-govern/
http://agricultura.gencat.cat/ca/departament/transparencia-i-bon-govern/
http://agricultura.gencat.cat/ca/departament/transparencia-i-bon-govern/normativa-organitzacio/
http://agricultura.gencat.cat/ca/departament/transparencia-i-bon-govern/
http://agricultura.gencat.cat/ca/departament/transparencia-i-bon-govern/normativa-organitzacio/
http://agricultura.gencat.cat/ca/departament/transparencia-i-bon-govern/normativa-organitzacio/
http://agricultura.gencat.cat/ca/departament/transparencia-i-bon-govern/
http://agricultura.gencat.cat/ca/departament/transparencia-i-bon-govern/normativa-organitzacio/
http://agricultura.gencat.cat/ca/departament/transparencia-i-bon-govern/normativa-organitzacio/
http://agricultura.gencat.cat/ca/departament/transparencia-i-bon-govern/gestio-serveis-publics/
http://agricultura.gencat.cat/ca/departament/transparencia-i-bon-govern/
http://agricultura.gencat.cat/ca/departament/transparencia-i-bon-govern/normativa-organitzacio/
http://agricultura.gencat.cat/ca/departament/transparencia-i-bon-govern/normativa-organitzacio/
http://agricultura.gencat.cat/ca/departament/transparencia-i-bon-govern/gestio-serveis-publics/
http://agricultura.gencat.cat/ca/departament/transparencia-i-bon-govern/gestio-serveis-publics/
http://agricultura.gencat.cat/ca/departament/transparencia-i-bon-govern/
http://agricultura.gencat.cat/ca/departament/transparencia-i-bon-govern/normativa-organitzacio/
http://agricultura.gencat.cat/ca/departament/transparencia-i-bon-govern/normativa-organitzacio/
http://agricultura.gencat.cat/ca/departament/transparencia-i-bon-govern/gestio-serveis-publics/
http://agricultura.gencat.cat/ca/departament/transparencia-i-bon-govern/gestio-serveis-publics/
http://agricultura.gencat.cat/ca/departament/transparencia-i-bon-govern/funcio-publica/
http://agricultura.gencat.cat/ca/departament/transparencia-i-bon-govern/
uj5u.com熱心網友回復:
怎么修?
嘗試集中并選擇更具體的,例如使用css-selectors并檢查該 url 是否已經在您的 url 串列中:
for a in soup.select(f'a[href*={keyWord}]'):
a=url a["href"]
if a not in hrefList:
hrefList.append(a)
例子
請注意,它專注于您的問題,并不包含您的所有代碼。
from bs4 import BeautifulSoup
import requests
listUrl = ["http://agricultura.gencat.cat","http://cultura.gencat.cat",
"https://dretssocials.gencat.cat","http://economia.gencat.cat",
"https://educacio.gencat.cat","http://empresa.gencat.cat",
"http://interior.gencat.cat","http://justicia.gencat.cat",
"https://presidencia.gencat.cat","https://salutweb.gencat.cat",
"https://politiquesdigitals.gencat.cat","https://territori.gencat.cat"]
hrefList=[]
keyWord = "transparencia"
def parse_url(url):
response = requests.get(url)
content = response.content
parsed_response = BeautifulSoup(content, "lxml")
return parsed_response
for url in listUrl:
soup = parse_url(url)
for a in soup.select(f'a[href*={keyWord}]'):
a=url a["href"]
if a not in hrefList:
hrefList.append(a)
hrefList
輸出
['http://agricultura.gencat.cat/ca/departament/transparencia-i-bon-govern/',
'http://agricultura.gencat.cat/ca/departament/transparencia-i-bon-govern/normativa-organitzacio/',
'http://agricultura.gencat.cat/ca/departament/transparencia-i-bon-govern/normativa-organitzacio/cataleg-serveis/',
'http://agricultura.gencat.cat/ca/departament/transparencia-i-bon-govern/normativa-organitzacio/normativa/',
'http://agricultura.gencat.cat/ca/departament/transparencia-i-bon-govern/normativa-organitzacio/actuacions-administratives-juridiques/',
'http://agricultura.gencat.cat/ca/departament/transparencia-i-bon-govern/gestio-serveis-publics/',
'http://agricultura.gencat.cat/ca/departament/transparencia-i-bon-govern/gestio-serveis-publics/auditories-serveis-publics/',
'http://agricultura.gencat.cathttp://governobert.gencat.cat/ca/transparencia/Gestio-serveis-publics/Estudis-de-politiques-publiques-e-danalisi-comparada_/',
...]
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/381318.html
