for row in soup.select(".table-row"):这一句的元素索引有问题 我该如何找到正确的呢
时间: 2024-03-27 22:40:30 浏览: 105
如果你想找到正确的元素索引,可以先使用浏览器的开发者工具在页面中选中你需要的信息(例如船期信息中的某个字段),然后右键选择Copy -> Copy selector,即可获取到该字段对应的CSS选择器。
例如,如果你想获取船期信息中的`departure_port`字段,可以在页面中选中该字段,然后右键选择Copy -> Copy selector,得到的选择器可能类似于:
```
#app > div > div > div > div > div:nth-child(2) > div > div:nth-child(3) > div > div > div > div:nth-child(1) > span
```
这个选择器使用了多个层级关系和nth-child伪类,比较复杂。但是,使用这个选择器可以定位到该字段对应的元素。
可以根据这种方式,使用开发者工具获取到需要的元素的CSS选择器,然后在代码中使用`select_one`或`select`方法来提取数据。
相关问题
for row in soup.select(".table-row"):这一句应该遍历的是#main > div > div.schedules-view__results > div:nth-child(5);#main > div > div.schedules-view__results > div:nth-child(6)等等我应该如何写呢
如果你想遍历所有船期信息的`table-row`元素,可以先定位到所有船期信息的外层`div`元素,然后遍历其中的每个子元素,判断其是否为`table-row`元素,如果是则提取其中的信息。
例如,可以使用下面的代码遍历所有船期信息:
```
results = soup.select_one("div.schedules-view__results")
for row in results.children:
if row.name == "div" and "table-row" in row.get("class", []):
# 提取船期信息
```
这个代码首先使用`select_one`方法定位到所有船期信息的外层`div`元素,然后遍历该元素的所有子元素,判断其是否为`table-row`元素。如果是,则可以提取其中的信息。注意,这里使用了`get`方法获取`class`属性的值,防止`class`属性不存在时出现异常。
你可以帮我把以下元素的索引更新到这里面么soup = BeautifulSoup(response.text, "html.parser") for row in soup.select(".table-row"): departure_port = row.select_one(".departure-port").text.strip() departure_time = row.select_one(".departure-time").text.strip() arrival_port = row.select_one(".arrival-port").text.strip() arrival_time = row.select_one(".arrival-time").text.strip() vessel_name = row.select_one(".vessel-name").text.strip()
当然可以,以下是您所需要的所有元素的索引:
```python
soup = BeautifulSoup(response.text, "html.parser")
for row in soup.select(".table-row"):
departure_port = row.select_one(".departure-port").text.strip()
departure_time = row.select_one(".departure-time").text.strip()
arrival_port = row.select_one(".arrival-port").text.strip()
arrival_time = row.select_one(".arrival-time").text.strip()
vessel_name = row.select_one(".vessel-name").text.strip()
terminal = row.select_one('div[class="mds-text--medium-bold"]').text.strip()
voyage_number = row.select('td')[5].text.strip()
transit_time = row.select('td')[6].text.strip()
service_name = row.select('td')[7].text.strip()
service_type = row.select('td')[8].text.strip()
price = row.select('td')[9].text.strip()
print(departure_port, departure_time, arrival_port, arrival_time, vessel_name, terminal, voyage_number, transit_time, service_name, service_type, price)
```
这里增加了以下元素的索引:
- `terminal`:使用了之前提到的 CSS 选择器来查找具有 `class="mds-text--medium-bold"` 属性的 `div` 元素;
- `voyage_number`:使用了 `row.select('td')[5]` 来获取行中第 6 个 `td` 元素,并使用 `text` 属性来获取元素的文本内容;
- `transit_time`:使用了 `row.select('td')[6]` 来获取行中第 7 个 `td` 元素,并使用 `text` 属性来获取元素的文本内容;
- `service_name`:使用了 `row.select('td')[7]` 来获取行中第 8 个 `td` 元素,并使用 `text` 属性来获取元素的文本内容;
- `service_type`:使用了 `row.select('td')[8]` 来获取行中第 9 个 `td` 元素,并使用 `text` 属性来获取元素的文本内容;
- `price`:使用了 `row.select('td')[9]` 来获取行中第 10 个 `td` 元素,并使用 `text` 属性来获取元素的文本内容。
这些元素的索引可以通过观察网页的 HTML 代码和属性来确定。
相关推荐
![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)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)