python - Web Scraping - 试图提取一些数据,但卡在最后的障碍

标签 python json selenium web-scraping beautifulsoup

我已经设法公开了正确的数据(其中一些是在页面中即时计算的,所以比我想象的要复杂一些)但我现在需要将其放入 JSON 字符串中,尽管进行了多次尝试,但我还是被卡住了!
这个 Python 脚本如下(使用 Selenium & BeautifulSoup):

from bs4 import BeautifulSoup
from selenium import webdriver
import datetime
from dateutil import parser
import requests
import json

url = 'https://www.braintree.gov.uk/bins-waste-recycling/route-3-collection-dates/1'

browser = webdriver.Chrome(executable_path = r'C:/Users/user/Downloads/chromedriver.exe')
browser.get(url)


html = browser.execute_script("return document.getElementsByTagName('html')[0].innerHTML")
soup = BeautifulSoup(html, "html.parser")

data=soup.find_all("div", {"class":"date_display"})
#print(data)
#out = {}


for data in data:
    bin_colour = data.find('h3').text
    bin_date = parser.parse(data.find('p').text).strftime('%Y-%m-%d')
    print(bin_colour)
    print(bin_date)
    print()

browser.quit()
这导致:
Grey Bin 

2021-06-30
   
Green Bin

2021-06-23
   
Clear Sack

2021-06-23

Food Bin

2021-06-23
它可能(可能)不是最好的代码/方法,所以我愿意接受您的建议。最终的主要目标是:
{"Grey Bin": "2021-06-30", "Green Bin": "2021-06-23", "Clear Sack": "2021-06-23", "Food Bin": "2021-06-23"}
希望这是有道理的,我已经尝试了各种方法来将数据转换为正确的格式,但经过数小时的尝试后似乎丢失了所有数据,我希望你们能提供帮助。
更新:
MendelG 的两种解决方案都运行良好。 Vitalis 的解决方案提供了四个输出,最后一个是所需的输出 - 所以感谢你们非常快速和有效的解决方案 - 我很接近,但看不到树木的木材!

最佳答案

要以字典格式获取数据,您可以尝试:

out = {}
for data in tag:
    out[data.find("h3").text] = parser.parse(data.find("p").text).strftime("%Y-%m-%d")

print(out)
或者,使用字典理解:
print(
    {
        data.find("h3").text: parser.parse(data.find("p").text).strftime("%Y-%m-%d")
        for data in tag
    }
)
输出:
{'Grey Bin': '2021-06-30', 'Green Bin': '2021-06-23', 'Clear Sack': '2021-06-23', 'Food Bin': '2021-06-23'}

关于python - Web Scraping - 试图提取一些数据,但卡在最后的障碍,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68038019/

相关文章:

python - 尝试使用正则表达式捕获特定模式 (Python 3.4)

python - 使用 boto HTTPS 上传到 S3?

javascript - 如何使用 JavaScript 中的索引浏览嵌套 JSON 文件?

Selenium 获取当前隐式等待的值

java - 使用 AppiumDriver 截图时获取浏览器无法访问异常

python - 在 Python 中将数组格式化为字符串

json - Jackson 反序列化 ... 意外 token (END_OBJECT),

javascript - 如何将现有 json 对象数组的某些对象复制到新的 json 数组

selenium - 开发人员在编写代码时应该考虑什么,以便测试人员更容易使用 selenium webdriver 进行自动化测试?

python - Python 中的条件最近邻