3.使用Python编写一个普通的静态页面爬虫,指定一个初始爬取的URL任务序列(可以是一个URL,也可以是多个),选取一种爬取策略从逐个爬取任务序列中的页面,并解析其中的超链接,经过超链接过滤,更新爬取任务序列。至少爬取50个不同页面,将代码和爬取结果截图粘贴于此。
时间: 2024-10-15 12:25:29 浏览: 38
在Python中编写一个基础的静态网页爬虫,我们可以使用如BeautifulSoup库配合requests库来完成这个任务。下面是一个简单的示例,我们先安装必要的库(如果还没有安装):
```bash
pip install requests beautifulsoup4
```
然后创建一个名为`basic_scraper.py`的文件,内容如下:
```python
import requests
from bs4 import BeautifulSoup
import os
import urllib.parse
# 初始化待爬取URL列表
urls = ["http://example.com"] # 替换成实际的起始URL
# 爬取函数
def crawl(url):
response = requests.get(url)
soup = BeautifulSoup(response.text, 'html.parser')
# 解析并获取所有超链接
links = [a['href'] for a in soup.find_all('a', href=True)]
# 过滤掉无效链接
filtered_links = [link for link in links if urllib.parse.urlparse(link).scheme in ['http', 'https']]
# 更新URLs列表
urls.extend(filtered_links[:5]) # 只添加5个新的链接防止无限递归
return filtered_links
# 开始爬取
visited_urls = set()
while len(urls) > 0 and len(visited_urls) < 50:
url = urls.pop(0)
if url not in visited_urls:
print(f"Crawling: {url}")
visited_urls.add(url)
new_links = crawl(url)
# 如果有新链接,将其加入到待爬取列表中
urls += [new_link for new_link in new_links if new_link not in visited_urls]
# 爬取结束,输出最后爬取的结果
print("Final URLs after scraping:")
for url in visited_urls:
print(url)
# 这里你需要手动运行程序并截取最后爬取结果的屏幕截图,因为这里无法直接生成图片。
```
请注意,这只是一个基础版本的爬虫,实际应用中可能需要处理更复杂的场景,比如错误处理、反爬机制、代理等。此外,由于网络限制和隐私政策,这个示例可能无法在某些网站上正常工作。
阅读全文