我正试着在网上搜索花旗自行车的旅行数据.因为我要下载多个文件,所以我想最好是通过访问所需的链接,然后使用其他方法来下载它们,从而用python自动完成这项工作

以下是我的代码:

url = 'https://s3.amazonaws.com/tripdata/index.html'
html_source = requests.get(url).text 
soup = BeautifulSoup(html_source, "html.parser")
soup.prettify() 

# I'm successful until I add '.find_all('tr')' at the end
citibikedata = soup.find('tbody', id = "tbody-content").find_all('tr') 
print(citibikedata)

HTML Page Screenshot Attached

当我try 打印时,我得到的是空的list.如果我做长度(len),我得到0. 然而,如果我go 掉find_all(),我只得到tbody-content的结果.

我怀疑,由于某种原因,我无法访问tr标签.同时,还有另一层标记‘td’,我必须访问它才能获取我实际正在查找的数据,即a标记中的href和文本.

如果我错过了什么,我将非常感谢你的帮助.我要提前谢谢你

我找不到访问没有类的标签的在线资源,这是我对这个问题的怀疑.或许并非如此.

推荐答案

这里的主要问题是,如前所述,数据是动态加载的,所以您可以从它的来源获取它.

https://s3.amazonaws.com/tripdata将提供一个包含您的数据的XML文件,只需迭代它的项并 Select 您的URL.

Example
import requests
from bs4 import BeautifulSoup

base_url = 'https://s3.amazonaws.com/tripdata/'
links = [
         base_url+key.text
         for key in BeautifulSoup(requests.get(base_url).text).select('Key')
        ]
links
Output
['https://s3.amazonaws.com/tripdata/201306-citibike-tripdata.zip',
 'https://s3.amazonaws.com/tripdata/201307-201402-citibike-tripdata.zip',
 'https://s3.amazonaws.com/tripdata/201307-citibike-tripdata.zip',
 'https://s3.amazonaws.com/tripdata/201308-citibike-tripdata.zip',
 'https://s3.amazonaws.com/tripdata/201309-citibike-tripdata.zip',
 'https://s3.amazonaws.com/tripdata/201310-citibike-tripdata.zip',...]

根据你的 comments ,你可以使用dictlist(满分dicts):

import requests
from bs4 import BeautifulSoup

base_url = 'https://s3.amazonaws.com/tripdata/'

data = []
         
for e in BeautifulSoup(requests.get(base_url).text).select('Contents'):
        data.append({
                'url':base_url+e.key.text,
                'date': e.lastmodified.text
        })
data

Python相关问答推荐

使用polars .滤镜进行切片速度比pandas .loc慢

将特定列信息移动到当前行下的新行

PMMLPipeline._ fit()需要2到3个位置参数,但给出了4个位置参数

切片包括面具的第一个实例在内的眼镜的最佳方法是什么?

Stacked bar chart from billrame

Pandas DataFrame中行之间的差异

当点击tkinter菜单而不是菜单选项时,如何执行命令?

如何在FastAPI中为我上传的json文件提供索引ID?

考虑到同一天和前2天的前2个数值,如何估算电力时间序列数据中的缺失值?

与命令行相比,相同的Python代码在Companyter Notebook中运行速度慢20倍

在matplotlib中删除子图之间的间隙_mosaic

Polars asof在下一个可用日期加入

无论输入分辨率如何,稳定扩散管道始终输出512 * 512张图像

在Python中使用if else或使用regex将二进制数据如111转换为001""

如何在验证文本列表时使正则表达式无序?

解决Geopandas和Altair中的正图和投影问题

python3中np. divide(x,y)和x/y有什么区别?'

BeatuifulSoup从欧洲志愿者服务中获取数据和解析:一个从EU-Site收集机会的小铲子

如何在表单中添加管理员风格的输入(PDF)

时间戳上的SOAP头签名无效