python - 如何使用 BeautifulSoup 停止文章打印两次

标签 python web-scraping beautifulsoup python-3.7

我正在尝试打印来自该网站的每篇文章链接,但文章链接打印了两次,只打印了其中的 5 个。

我尝试将范围增加到 (1,20),这会打印所有十篇文章链接,但每个链接都打印两次。

from bs4 import BeautifulSoup
from urllib.request import urlopen

url = urlopen("https://www.politico.com/newsletters/playbook/archive")
target = 'C:/Users/k/Politico/pol.csv'

content = url.read()

soup = BeautifulSoup(content,"lxml")

for article in range (1,10):
    #Prints each article's link and saves to csv file
    print(soup('article')[article]('a',{'target':'_top'}))

我希望输出的是 10 个文章链接,没有一个是重复的。

最佳答案

您可以使用 css 选择器 .front-list h3 > a

import requests
from bs4 import BeautifulSoup as bs

r = requests.get('https://www.politico.com/newsletters/playbook/archive#')
soup = bs(r.content, 'lxml')
links = [link['href'] for link in soup.select('.front-list h3 > a')]
print(links)

关于python - 如何使用 BeautifulSoup 停止文章打印两次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56087919/

相关文章:

python - 从元组列表创建 dic,其中 key 接受 python3 中所有可用值的列表

python - 使用 openCV 和 python 检测图像中的图案和数字

php - 从网站读取/获取内容和数据

python -/n 漂亮的汤文

python - 寻找关于网络抓取项目最佳实践的好教程的推荐?

python - Python 在处理大量数字/列表时是否有问题,或者我的代码有问题?

python - 在django模型自定义保存中使用唯一id

python - 使用 Selenium 进行网页抓取

python-3.x - (Python 3) Spider 必须返回 Request、BaseItem、dict 或 None,得到 'generator'

python - 如何将此 XPath 表达式转换为 BeautifulSoup?