怎样获取所有th里class为threadname的第一个a标签的href
时间: 2023-08-22 18:05:19 浏览: 39
可以使用以下代码获取所有`<th>`中`class`属性为`threadname`的第一个`<a>`标签的`href`属性:
```python
from bs4 import BeautifulSoup
# 假设HTML代码存储在变量html中
soup = BeautifulSoup(html, 'html.parser')
# 查找所有<th>中class属性为threadname的第一个<a>标签的href属性
for th in soup.find_all('th', {'class': 'threadname'}):
a = th.find('a')
if a:
href = a.get('href')
print(href)
```
上述代码中,我们首先使用`BeautifulSoup`将HTML代码解析为`Soup`对象,然后使用`find_all`方法查找所有`<th>`标签中`class`属性为`threadname`的标签。对于每个找到的`<th>`标签,我们使用`find`方法查找其第一个`<a>`标签,并检查是否存在。如果存在,我们使用`get`方法获取其`href`属性,并输出到控制台。
相关问题
怎样获取所有th里class为threadname的第一个span标签的href
你可以使用以下代码来获取所有`class`为`threadname`的第一个`span`标签的`href`属性:
```python
from bs4 import BeautifulSoup
html = """
<html>
<body>
<div class="thread">
<div class="threadname">
<span><a href="link1">Thread 1</a></span>
<span><a href="link2">Thread 2</a></span>
</div>
</div>
<div class="thread">
<div class="threadname">
<span><a href="link3">Thread 3</a></span>
<span><a href="link4">Thread 4</a></span>
</div>
</div>
</body>
</html>
"""
soup = BeautifulSoup(html, "html.parser")
for div in soup.find_all("div", class_="thread"):
span = div.find("div", class_="threadname").find("span")
href = span.find("a")["href"]
print(href)
```
这个代码会输出:
```
link1
link3
```
用java写// 定义接口Apublic interface A { void a();}// 定义线程类B,实现接口Apublic class B implements A, Runnable { private String threadName; public B(String name) { threadName = name; Thread t = new Thread(this, threadName); t.start(); } public void run() { a(); } public void a() { System.out.println(threadName + " 这是第16周"); }}
您已经给出了类A和类B的定义代码,我将其整理如下:
```java
// 定义接口A
public interface A {
void a();
}
// 定义线程类B,实现接口A
public class B implements A, Runnable {
private String threadName;
public B(String name) {
threadName = name;
Thread t = new Thread(this, threadName);
t.start();
}
public void run() {
a();
}
public void a() {
System.out.println(threadName + " 这是第16周");
}
}
```
这段代码定义了一个接口A和一个线程类B,B实现了接口A并重写了接口中的方法a(),在构造B的实例时会启动一个新线程,并在该线程中执行a()方法。在a()方法中,会输出线程名和“这是第16周”信息。
您可以在主函数中创建一个名为“thread-B”的线程B实例,代码如下:
```java
public static void main(String[] args) {
B b = new B("thread-B");
}
```
当运行程序时,会启动一个名为“thread-B”的线程,并输出“thread-B 这是第16周”信息。