python根据网址页码分页爬取大麦网,使用__init__()
时间: 2023-10-23 07:09:51 浏览: 119
如果你想将网址和页码作为参数传递给类的初始化函数 `__init__()`,可以按照以下方式修改代码:
```python
import requests
from bs4 import BeautifulSoup
class DamaiSpider:
def __init__(self, keyword, num_pages):
self.keyword = keyword
self.num_pages = num_pages
self.base_url = f"https://search.damai.cn/search.htm?keyword={keyword}"
self.headers = {
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36"
}
def get_concert_info(self, page):
url = f"{self.base_url}&currPage={page}"
response = requests.get(url, headers=self.headers)
soup = BeautifulSoup(response.text, "html.parser")
concert_list = []
concert_items = soup.find_all("div", class_="item")
for item in concert_items:
concert_title = item.find("span", class_="txt-black").text.strip()
concert_time = item.find("span", class_="txt-dmt-gray").text.strip()
concert_location = item.find("div", class_="venueitem").text.strip()
concert_info = {
"title": concert_title,
"time": concert_time,
"location": concert_location
}
concert_list.append(concert_info)
return concert_list
def run(self):
all_concert_info = []
for page in range(1, self.num_pages + 1):
concert_info_list = self.get_concert_info(page)
all_concert_info.extend(concert_info_list)
return all_concert_info
if __name__ == "__main__":
spider = DamaiSpider(keyword="演唱会", num_pages=5)
concert_info_list = spider.run()
for concert in concert_info_list:
print(concert)
```
在这个示例中,我们创建了一个名为 `DamaiSpider` 的类。在类的初始化函数 `__init__()` 中,我们接受 `keyword` 和 `num_pages` 作为参数,并将其保存为类的属性。然后,在 `get_concert_info()` 方法中,我们使用保存的关键字和页码来构造URL。类的 `run()` 方法用于执行爬虫逻辑,它循环调用 `get_concert_info()` 方法来获取演唱会信息,并将所有信息存储在一个列表中。
在主程序中,我们创建了 `DamaiSpider` 类的实例,并传入关键字和要爬取的页数。然后调用 `run()` 方法来运行爬虫并获取演唱会信息。最后,我们遍历演唱会信息列表并打印出来。
请注意,在示例代码中,我们将关键字设置为"演唱会",页码设置为5。你可以根据自己的需求修改这些参数。
阅读全文