python - 硒中的元素迭代
问题描述
我正在尝试制作一个网络抓取工具,它可以抓取《纽约时报》搜索结果页面并抓取和存储出版日期、作者、标题等内容。标题和日期等其他所有字段都被正确抓取和存储,但作者却没有,因为有些文章没有作者元素。
我要做的是遍历搜索结果并存储作者姓名,如果找不到该姓名,我想将其设置为-1。我有这段代码,但它没有将 -1 存储在缺少的作者的位置。
(我刚刚开始进行网络抓取,这是我的第一个项目。)
from selenium import webdriver
from selenium.common.exceptions import NoSuchElementException
import time
authors = []
driver = webdriver.Firefox()
driver.get('https://www.nytimes.com/search?dropmab=false&query=Machine%20Learning&sort=newest')
for i in range(6):
time.sleep(3)
driver.find_element_by_xpath('(//button[contains(.,"Show More")])').click()
result_cards = driver.find_elements_by_css_selector('li.css-1l4w6pd')
for item in result_cards:
try:
author = item.find_elements_by_xpath('(//p[@class="css-15w69y9"])')
except NoSuchElementException:
print("No author found for this")
author = -1
for auth in author:
authors.append(auth.text)
解决方案
在最后一个for
循环中,您正在迭代author
这将引发错误,因为它不可迭代。
您可以省略最后一个 for 循环。
我对您的 try-except 语句进行了一些更改,这些语句应该可以完成您的工作。
for item in result_cards:
try:
author = item.find_elements_by_xpath('(//p[@class="css-15w69y9"])')
authors.append(author)
except NoSuchElementException:
print("No author found for this")
authors.append(-1)
上面的代码会将作者附加到authors
列表中,如果找到作者,否则它将附加-1
到您的列表中。
推荐阅读
- javascript - how set geolocation to block in chrome using puppeteer
- javascript - 由于 URI 错误,无法连接到 MongoDB
- ios - Create framework including .dylib and it's headers for iOS
- html - 自定义光标 CSS 不适用于网页的某些部分
- c# - Is there a way to use a DbSet in another model with additional properties?
- linux - What is the best way to take care of noise in ffmpeg?
- yocto - bitbake 失败,找不到 .cpp 文件
- html - 按钮单击时不显示引导模式
- javascript - Combine two arrays based off of ID and Index
- php - 如何从 PDO fetchall 中查找重复的数组值?