通过类继承,实现一个线程类, 从https://www.51voa.com/VOA_Standard_3.html (其中 "3"可被替换为其他数字,对应翻页操作)中获取新的链接地址列表。
时间: 2023-06-18 14:07:17 浏览: 233
以下是一个简单的线程类,可以从VOA英语网站中获取指定页面的链接地址列表:
```python
import requests
from bs4 import BeautifulSoup
import threading
class LinkGetter(threading.Thread):
def __init__(self, page_num):
threading.Thread.__init__(self)
self.page_num = page_num
self.links = []
def run(self):
url = f"https://www.51voa.com/VOA_Standard_{self.page_num}.html"
response = requests.get(url)
soup = BeautifulSoup(response.content, "html.parser")
for link in soup.find_all("a"):
href = link.get("href")
if href and href.endswith(".html"):
self.links.append(href)
def get_links(self):
return self.links
```
使用该线程类的示例代码:
```python
threads = []
for i in range(1, 11):
link_getter = LinkGetter(i)
link_getter.start()
threads.append(link_getter)
for thread in threads:
thread.join()
for thread in threads:
print(f"Page {thread.page_num} links:")
for link in thread.get_links():
print(link)
```
该示例代码创建了10个线程,分别获取VOA英语网站前10页的链接地址列表,并输出到控制台。注意,在实际使用中,可能需要对线程数进行限制,以免过多的线程导致系统资源浪费。同时,线程间的数据同步也需要注意,可以使用锁等机制来保证线程间数据的正确性。
阅读全文