爬虫案例之爬取win4000的图片

本文介绍了使用Python进行网络爬虫的实践案例,目标是抓取win4000网站上的美女图片。在爬取过程中,遇到在第三个分类页面出现错误的问题,目前寻求解决方案。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

代码如下:

# coding=utf-8


import os
import requests
from PIL import Image
from io import BytesIO
from lxml import etree
from PIL import ImageFile


ImageFile.LOAD_TRUNCATED_IMAGES = True


# 先定义一个opener函数:
def open_mn_web(url):
    try:
        headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/74.0.3729.131 Safari/537.36',
                   'Cookie': 'BAIDU_SSP_lcr=https://www.baidu.com/link?url=23hwYBuWpwUfbSbQSvJgY869r7hcpListVsxpmAC-8WMK1c1KF5UZJmeUzQ5tn7ZgIs48xWvDcxNo4KNgSsk0a&wd=&eqid=acacb6c4000067ee000000045cd99b1d; Hm_lvt_492109f03bd65de28452325006c4a53c=1557764936; security_session_verify=409ca2b5630fd5ab4c56c0bee5a3540b; Hm_lpvt_492109f03bd65de28452325006c4a53c=1557771292',
                   'Referer': url}
        response = requests.get(url, headers=headers)
        if response.status_code == 200:
            return response.content
        return None
    except (RecursionError, Conne
### Python 爬虫大规模数据采集示例 为了实现从网页上抓取大量数据(例如2000条记录),可以使用`requests`库来发送HTTP请求并接收响应,再通过`BeautifulSoup`解析HTML文档。下面是一个完整的Python脚本例子,用于模拟爬取一个假设网站上的商品列表页面,并提取其中的商品名称和价格信息。 #### 安装依赖库 首先需要确保已经安装了必要的第三方模块: ```bash pip install requests beautifulsoup4 pandas openpyxl ``` #### 编写爬虫代码 接下来编写具体的爬虫逻辑如下所示: ```python import time from random import randint import requests from bs4 import BeautifulSoup as soup import pandas as pd def fetch_page(url, headers=None): """获取单页内容""" try: response = requests.get(url=url, timeout=30, headers=headers) if response.status_code == 200: return response.text else: print(f"Failed to get page {url}, status code: {response.status_code}") return None except Exception as e: print(e) def parse_items(html_content): """解析每一页中的项目信息""" items_list = [] sp = soup(html_content,'html.parser') item_containers = sp.find_all('div', class_='item-container')[:2000] for container in item_containers: name_tag = container.h2.a.string.strip() price_tag = container.span['data-price'] items_list.append({ 'name': name_tag, 'price': float(price_tag), }) return items_list if __name__ == '__main__': base_url = "https://example.com/products?page={}" user_agent = {'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36'} all_data = [] start_time = time.time() for i in range(1, 10): # 假设共有9页,每页最多有约200个项目 current_url = base_url.format(i) html_text = fetch_page(current_url,user_agent) if not html_text: continue parsed_results = parse_items(html_text) all_data.extend(parsed_results) sleep_duration = randint(1, 3) # 防止被封IP设置随机等待时间 time.sleep(sleep_duration) if len(all_data)>=2000: break end_time = time.time() elapsed_time = round(end_time-start_time,2) print(f'共收集到{len(all_data)}条有效记录,在{elapsed_time}秒内完成') df = pd.DataFrame(all_data) output_file_path = './output.xlsx' df.to_excel(output_file_path,index=False,sheet_name='Sheet1') print(f'已保存至文件:{output_file_path}') ``` 此段程序会遍历指定范围内的分页链接,逐个访问并将结果存储在一个DataFrame对象里;当累积的数据量达到预定义的数量时停止循环。最后将所有的数据导出成Excel表格形式以便后续处理分析[^1]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值