拉错了链接。美丽的精灵,Python

2024-10-03 11:20:33 发布

您现在位置:Python中文网/ 问答频道 /正文

这是我第一次来这里,所以请耐心等待。你知道吗

我正试图从我当地的新闻网站上搜刮(城市名称——格但斯克)中有这个词的所有链接。你知道吗

问题是,我收到了一些没有城市名称的链接。你知道吗

import requests 
from fake_useragent import UserAgent
from bs4 import BeautifulSoup
import lxml
import re
url = 'http://www.trojmiasto.pl'
nazwa_pliku = 'testowyplik.txt'
user_agent = UserAgent()

strona = requests.get(url,headers={'user-agent':user_agent.chrome})
with open(nazwa_pliku,'w') as plik:
    plik.write(page.content.decode('utf-8')) if type(page.content) == bytes else file.write(page.content)

def czytaj():
    plikk = open('testowyplik.txt')
    data = plikk.read()
    plikk.close()
    return data

soup = BeautifulSoup(czytaj(),'lxml')

linki = [li.div.a for div in soup.find_all('div',class_='entry-letter')]
for lin in linki:
        print(lin)

rezultaty = soup.find_all('a',string=re.compile("Gdańsk"))

print(rezultaty)

l=[]

s=[]

for tag in rezultaty:

    l.append(tag.get('href'))

    s.append(tag.text)

for i in range(len(s)):
        print('url = '+l[i])
        print('\n')

Tags: inimportdiv名称urlfortagpage
2条回答

可以使用contains运算符(*)尝试attribute=value

rezultaty = [item['href'] for item in soup.select("[href*='Gdansk']")]

完整脚本

import requests
from bs4 import BeautifulSoup as bs

r = requests.get('http://www.trojmiasto.pl')
soup = bs(r.content, 'lxml')    
rezultaty = [item['href'] for item in soup.select("[href*='Gdansk']")]
print(rezultaty)

没有列表理解:

for item in soup.select("[href*='Gdansk']"):
    print(item['href'])

下面是Python 3中一个完整而简单的示例:

import requests
from bs4 import BeautifulSoup

city_name = 'Gdańsk'
url = 'http://www.trojmiasto.pl'
headers = {
    'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3112.113 Safari/537.36'
}

with requests.get(url, headers=headers) as html:
    if html.ok:
        soup = BeautifulSoup(html.content, 'html.parser')
        links = soup('a')
        for link in links:
            if city_name in link.text:
                print('\t- (%s)[%s]' % (link.text, link.get('href')))

以下是上述代码的输出(为清晰起见,格式为Markdown):

- [ZTM Gdańsk](//ztm.trojmiasto.pl/)
- [ZTM Gdańsk](https://ztm.trojmiasto.pl/)
- [Polepsz Gdańsk i złóż projekt do BO](https://www.trojmiasto.pl/wiadomosci/Polepsz-Gdansk-i-zloz-projekt-do-BO-n132827.html)
- [Pomnik Pileckiego stanie w Gdańsku](https://www.trojmiasto.pl/wiadomosci/Pomnik-rotmistrza-Witolda-Pileckiego-jednak-stanie-w-Gdansku-n132806.html)
- [O Włochu, który pokochał Gdańsk](https://rozrywka.trojmiasto.pl/Roberto-M-Polce-Polacy-maja-w-sobie-cos-srodziemnomorskiego-n132686.html)
- [Plakaty z poezją na ulicach Gdańska](https://kultura.trojmiasto.pl/Plakaty-z-poezja-na-ulicach-Gdanska-n132696.html)
- [Uniwersytet Gdański skończył 49 lat](https://nauka.trojmiasto.pl/Uniwersytet-Gdanski-skonczyl-50-lat-n132797.html)
- [Zapisz się na Półmaraton Gdańsk](https://aktywne.trojmiasto.pl/Zapisz-sie-na-AmberExpo-Polmaraton-Gdansk-2019-n132785.html)
- [Groźby na witrynach barów w Gdańsku](https://www.trojmiasto.pl/wiadomosci/Celtyckie-krzyze-i-grozby-na-witrynach-barow-w-Gdansku-n132712.html)
- [Stadion Energa Gdańsk](https://www.trojmiasto.pl/Stadion-Energa-Gdansk-o25320.html)
- [Gdańsk Big Beat Day 2019  ](https://www.trojmiasto.pl/rd/?t=p&id_polecamy=59233&url=https%3A%2F%2Fimprezy.trojmiasto.pl%2FGdansk-Big-Beat-Day-2019-imp475899.html&hash=150ce9c9)
- [ZTM Gdańsk](https://ztm.trojmiasto.pl/)

相关问题 更多 >