singer_id = soup.select(".srchsongst .item .td .text a")[0]["href"].split("=")[-1]解决这个代码列表空的问题
时间: 2024-05-14 12:16:04 浏览: 19
在这段代码中,首先使用了 BeautifulSoup 库对 HTML 进行解析,然后使用 `select` 方法选取了一些元素,最后通过字符串操作得到了 singer_id 变量。
如果 `soup.select(".srchsongst .item .td .text a")` 返回一个空列表,那么 `soup.select(".srchsongst .item .td .text a")[0]` 就会引发 IndexError 异常。为了避免这种情况,可以使用 try-except 块来捕获异常并做出处理。例如:
```
try:
singer_id = soup.select(".srchsongst .item .td .text a")[0]["href"].split("=")[-1]
except IndexError:
print("没有找到歌手 ID")
singer_id = None # 或者其他默认值
```
这样,如果 `soup.select(".srchsongst .item .td .text a")` 返回一个空列表,程序就会输出一条提示信息,并将 singer_id 变量赋值为 None 或其他默认值,而不会引发异常。
相关问题
for row in soup.select(".table-row"): departure_port = soup.select_one("div:contains('Shanghai East Container Terminal')").text.strip() departure_time = soup.select_one("div[data-test='departure-date']").text.strip() arrival_port = soup.select_one("div:contains('PSA Singapore Terminal')").text.strip() arrival_time = soup.select_one("div[data-test='arrival-date']").text.strip() vessel_name = soup.select_one("span:contains('NIMTOFTE MAERSK')").text.strip()这一步是什么意思
这一步的作用是使用CSS选择器来从BeautifulSoup对象`soup`中提取所需的数据,并将其存储在变量中。
首先,`soup.select(".table-row")`使用CSS选择器`.table-row`来匹配所有的class为`table-row`的元素,这些元素包含了船期信息的各个字段。
然后,对于每个匹配到的元素,使用相应的CSS选择器来取出所需的字段值,例如:
- `departure_port = soup.select_one("div:contains('Shanghai East Container Terminal')").text.strip()`: 使用CSS选择器`div:contains('Shanghai East Container Terminal')`匹配到第一个包含"Shanghai East Container Terminal"文本的div元素,并将其文本内容去除空格和换行符后存储在`departure_port`变量中。
- `departure_time = soup.select_one("div[data-test='departure-date']").text.strip()`: 使用CSS选择器`div[data-test='departure-date']`匹配到第一个包含`data-test`属性值为`departure-date`的div元素,并将其文本内容去除空格和换行符后存储在`departure_time`变量中。
- `arrival_port = soup.select_one("div:contains('PSA Singapore Terminal')").text.strip()`: 使用CSS选择器`div:contains('PSA Singapore Terminal')`匹配到第一个包含"PSA Singapore Terminal"文本的div元素,并将其文本内容去除空格和换行符后存储在`arrival_port`变量中。
- `arrival_time = soup.select_one("div[data-test='arrival-date']").text.strip()`: 使用CSS选择器`div[data-test='arrival-date']`匹配到第一个包含`data-test`属性值为`arrival-date`的div元素,并将其文本内容去除空格和换行符后存储在`arrival_time`变量中。
- `vessel_name = soup.select_one("span:contains('NIMTOFTE MAERSK')").text.strip()`: 使用CSS选择器`span:contains('NIMTOFTE MAERSK')`匹配到第一个包含"NIMTOFTE MAERSK"文本的span元素,并将其文本内容去除空格和换行符后存储在`vessel_name`变量中。
最后,将上述变量的值存储在一个字典中,表示一条船期信息。这个字典可以用于后续的数据处理和存储。
news_time = soup.select_one('.item .time').text AttributeError: 'NoneType' object has no attribute 'text'
这个错误是由于`soup.select_one('.item .time')`返回了None对象,因此不能对它使用`text`访问操作。这可能是由于网页代码中没有符合这个选择器的元素,或者是因为网页请求返回了错误的结果。你可以在这一行代码之前添加一些调试代码来检查`soup.select_one('.item .time')`返回的对象是否为None,例如:
```
time_elem = soup.select_one('.item .time')
if time_elem is not None:
news_time = time_elem.text
else:
print("No element found for selector '.item .time'")
```
这样的话,如果没有找到符合选择器的元素,它将会打印一条消息,告诉你这个问题,并且不会抛出`AttributeError`异常。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)