Python爬虫实例附代码-获取页面内大量url里的数据

Python爬虫实例-获取页面内大量url里的数据

一、前言

本章以某政府公开招标中标网站为实例,进行某一个指定类别的中标数据挖掘,并将这些数据存储到excel表格中。
网站:http://jsggzy.jszwfw.gov.cn/jyxx/tradeInfonew.html
需要挖掘内容:近两三个月的交通工程的中标结果公告(里的详细内容)

在使用python爬虫过程中有以下几点要注意!!
(1)遵守网站的 robots.txt
大多数网站都会有一个 robots.txt 文件,指定爬虫允许访问的路径。确保爬虫遵守这些规则,以避免不必要的法律问题和道德冲突。
(2)控制请求频率
不要频繁地向服务器发送请求,以免给服务器带来过大的压力,导致 IP 被封禁。可以使用 time.sleep() 方法在请求之间添加延迟。
昨天我抓了一天,下午的时候请求中断了一次。过了一会再试就好了~

import time
time.sleep(1)  # 休眠 1 秒

(3)处理异常
网络请求过程中可能会发生各种异常情况,如连接超时、目标网页不可访问等。确保代码有适当的异常处理机制。

try:
    response = requests.get(url, headers=headers, timeout=10)
    response.raise_for_status()
except requests.exceptions.RequestException as e:
    print(f'Error: {e}')

二、Python爬虫简介

Python 爬虫是一种用于自动化网页数据抓取的工具。使用 Python 进行网页爬虫的过程一般包括以下几个步骤:
(1)发送请求:向目标网页发送 HTTP 请求,并获取响应内容。
(2)解析内容:将获取到的网页内容进行解析,提取出需要的数据。
(3)保存数据:将提取到的数据进行存储,通常保存在文件、数据库等。

最常使用的库有 requests 和 BeautifulSoup 库,需要安装。可以使用以下命令进行安装:

pip install requests
pip install beautifulsoup4

对于更复杂的需求,可以考虑使用以下工具:
Scrapy:一个功能强大的爬虫框架,适用于大规模爬取。
Selenium:适用于需要处理动态内容或模拟用户操作的场景。
lxml:高性能的 HTML/XML 解析库。

三、代码解析

导入相应的库

import time
import requests
import pandas as pd
from datetime import datetime, timedelta
import threading
from bs4 import BeautifulSoup
import re
import json
from dateutil.relativedelta import relativedelta

点开页面,发现里面有大量的标题,每个中标公告标题都对应一个url。先获取页面里的所有url。

#提取页面里的URL地址
def get_content_list(start_page,url_list):
    now = datetime.now()
    end_of_day =now.replace(hour=23, minute=59, second=59, microsecond=0)
    # Calculate the date three months ago
    three_months_ago = now - relativedelta(months=3)

    # Set the time to 00:00:00 for three months ago
    start_of_date = three_months_ago.replace(hour=0, minute=0, second=0, microsecond=0)
    # Convert datetime objects to strings
    end_of_day_str = end_of_day.strftime("%Y-%m-%d %H:%M:%S")
    start_of_date_str = start_of_date.strftime("%Y-%m-%d %H:%M:%S")
    json_payload_template  = '''{
        "token": "",
        "pn": %d,
        "rn": 20,
        "sdt": "",
        "edt": "",
        "wd": "",
        "inc_wd": "",
        "exc_wd": "",
        "fields": "title",
        "cnum": "001",
        "sort": "{\\"infodatepx\\":\\"0\\"}",
        "ssort": "title",
        "cl": 200,
        "terminal": "",
        "condition": [
            {
                "fieldName": "categorynum",
                "isLike": true,
                "likeType": 2,
                "equal": "003002"
            }
        ],
        "time": [
            {
                "fieldName": "infodatepx",
                "startTime": "%s",
                "endTime": "%s"
            }
        ],
        "highlights": "title",
        "statistics": null,
        "unionCondition": null,
        "accuracy": "",
        "noParticiple": "1"
招标搜索软件使用说明 软件使用类似于百度的蜘蛛引擎,每日爬行全国招标信息、政府采购类网站,从中提取出各类有效的招标数据或政府采购信息,用户下载我们的招标搜索软件,免安装即可搜索使用,就可搜索到全国最新的各类招标中标政府采购等信息,从而为企业解决了在获取各类招投标信息时,渠道单一、只使用某一或几个网站进行搜索、导至错失大量有用信息无法知晓。软件在操作上、我们力求以最简单的操作方式来达到最理想的搜索结果,您只需要选择几个不同的搜索条件,即可让你看到意想不到的信息。 采购招标信息 政府网站(公共资源交易中心,政府采购中心)、大型企业网站、代理机构网站等机构采购招标信息,会员(采购商)自主发布采购招标信息,供用户查询。内容包含投标要求、业主、招标公司联系人、联系方式、及购买标书的时间、地点等,每日更新公开招标信息。 政府采购 各省、市、县政府采购单位发布的询价类、比选、竞争性谈判及单一来源采购类信息。 企业采购 国内各大企业、集团公司所发布的直接采购信息,用户可通过非招标的形式,直接和业主方联系,洽谈供货及长期合作事宜。 会员招标采购 中机采招网广大用户发布的招标信息,包括招标内容、采购单位以及联系人、联系方式。中机采招网可推荐符合采购单位要求的认证企业前去参与。 变更通知 是在发布招标公告后补充公告、变更公告、废标公告、重新招标等信息,使用户可以及时获知,并有效的对投标工作做出相应方案调整,以免因此导致投标失误。 标书下载 部分招标项目可向用户提供电子版标书下载服务,标书内容包含项目采购清单、商务文件、技术参数、评标办法、报名表等,省去因盲目购买标书而损失的财力和时间成本。 中标信息 政府网站(公共资源交易中心,政府采购中心)、大型企业网站、代理机构网站等机构中标信息,供用户查询。提供中标单位、中标项目、中标金额,为会员提供直接供货渠道。更有利于会员为中标企业在后期分包工作中,做好提前介入工作。 招标数据查询 中机采招网庞大招标数据信息,可为用户提供历史招标数据,统计、导出、分析提供相关数据支持。 中标数据查询 中机采招网庞大中标数据信息,可为用户提供历史中标数据,内容包含采购单位、中标单位、中标金额等,对用户的数据统计、导出、分析提供相关数据支持。 项目导出 用户可针对中机采招网项目库中所感兴趣的项目,按地区和时间进行分别汇总,并导出保存在本地电脑上进行存档备案。 数据库 (招标) 根据用户需求,以表格形式汇总近一个月内各行业、各领域招标采购数据信息,为用户做数据分析提供支持服务。 数据库 (中标) 根据用户需求,以表格形式汇总近一个月内各行业、各领域中标数据信息,为用户做数据分析提供支持服务。 数据库 (企业) 供包含业主、招标代理机构及相关单位、供应商、政府采购中心等企业数据库在线查询服务。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值