政府采购项目数据抓取
昨天投简历的时候,有个HR给了我个网站,http://www.dg.gov.cn/machong/zfcg/list.shtml
大致意思我也没懂,聊天也不回我,我只能按自己的理解尝试去抓点数据,看看有没有戏,找实习找了半个多月,毫无进展。
下面是这个网站的代码:
from lxml import etree
import requests
import pymysqlheaders = {"User-Agent": "Mozilla/5.0 (Linux; Android 6.0; Nexus 5 Build/MRA58N) ""AppleWebKit/537.36 ""(KHTML, like Gecko) Chrome/72.0.3626.121 Mobile Safari/537.36",
}base_url = 'http://www.dg.gov.cn'#连接数据库
db = pymysql.connect(host = "localhost" , user = "root" , password = "123",database="kaijianboss",port=3306,charset='utf8')
#获取游标
cursor = db.cursor()#处理列表页,拿到详情页的链接
def parse_list(url):#xpath解析resp = requests.get(url,headers)text = etree.HTML(resp.text)# print(text)#获取网页中的短连接,该链接没有域名urls = text.xpath("//div[contains(@class,'list-right_title')]/a/@href")for url in urls:#添加域名,构造真实链接t_url = base_url + url# print(t_url)#传入解析函数,获取数据parse_detail(t_url)#处理详情页,获取所需数据
def parse_detail(url):#用于存储数据的字典info = {}resp = requests.get(url,headers)text = etree.HTML(resp.text)#获取项目标题title = text.xpath("//div[contains(@class,'title')]//ucaptitle/text()")#获取内容contents ="".join(text.xpath("//div[contains(@class,'con_cen')]//p//text()"))#获取时间time = "".join(text.xpath("//publishtime/text()")).strip()#获取类型cate = text.xpath("//div[contains(@class,'con_cen')]//p")[0]if cate == '结果公布':bidding = "已结束"else:bidding = "投标中"#获取网址url = url#获取单位名称company = "东莞市麻涌镇招投标服务所"#获取附件,构造附件的链接f_accessory = "".join(text.xpath("//a[@type='file']/@href"))s = url.split("/")# print(s)s_url = s[0] + "/" + s[1] + "/" + s[2] + "/" + s[3] + "/" + s[4] + "/" + s[5]# print(s_url)if f_accessory:accessory = s_url +"/" + f_accessory# print(accessory)else:accessory = "无附件"info['title'] = titleinfo['contents'] = contentsinfo['time'] = timeinfo['bidding'] = biddinginfo['url'] = urlinfo['company'] = companyinfo['accessory'] = accessorysave_to_sql(info)#构造url,传递给列表页方法
def main():for x in range(2,73):url = "http://www.dg.gov.cn/machong/zfcg/list_{}.shtml".format(x)parse_list(url)#将数据存储到MySQL
def save_to_sql(info):#sql语句sql = """insert into dgmy(id, title, contents, time, bidding, url, company, accessoryurl)values(null, %s,%s,%s,%s,%s,%s,%s)"""title = info['title']contents = info['contents']time = info['time']bidding = info['bidding']url = info['url']company = info['company']accessoryurl = info['accessory']try:cursor.execute(sql, (title,contents,time,bidding,url,company,accessoryurl))db.commit()print("sql存储成功")except Exception as e:print("Error:", e.args)if __name__ == '__main__':main()
简单就说一下思路,其实这个网站还挺好爬的,可以用框架,也可以不用,这里没用是觉得,它的链接很好理解和构造,很简单的循环就可以完成。
这里比较难的困难就是,获取附件的链接,需要多注意一下下载链接的来源逻辑。
网站1000+数据全都拿到了。
数据库:
还有第二页。不过多展示。
顺便记录一下报错:向数据库插入数据时,报错如下:
", 105, 130, 'ordinal not in range(256)'
不知道为啥,解决为,连接数据库时加入该参数:
charset='utf8'
估计这个还是凉了,两天了都不带理人的,哎,难搞哦。
政府采购项目数据抓取相关推荐
- 关于Python爬虫原理和数据抓取1.1
为什么要做爬虫? 首先请问:都说现在是"大数据时代",那数据从何而来? 企业产生的用户数据:百度指数.阿里指数.TBI腾讯浏览指数.新浪微博指数 数据平台购买数据:数据堂.国云数据 ...
- 北京弘易信泰 网络数据抓取技术实践分享
弘易信泰,作为大数据产品厂商,长期关注业界数据抓取技术的变化,当前,互联网数据以前所未有的态势迅猛增长,对于信息化技术而言,海量数据的抓取技术尤为重要,在数据迅速发展的大背景下,中国政府与企业类型的信 ...
- 基于Hadoop的豆瓣电影的数据抓取、数据清洗、大数据分析(hdfs、flume、hive、mysql等)、大屏可视化
目录 项目介绍 研究背景 国内外研究现状分析 研究目的 研究意义 研究总体设计 数据获取 网络爬虫介绍 豆瓣电影数据的采集 数据预处理 数据导入及环境配置 Flume介绍 Hive介绍 MySQL介绍 ...
- Python学习笔记——爬虫原理与Requests数据抓取
目录 为什么要做网络爬虫? 通用爬虫和聚焦爬虫 HTTP和HTTPS 客户端HTTP请求 请求方法 HTTP请求主要分为Get和Post两种方法 常用的请求报头 1. Host (主机和端口号) 2. ...
- 干货!链家二手房数据抓取及内容解析要点
"本文对链家官网网页进行内容分析,可以作为一般HTTP类应用协议进行协议分析的参考,同时,对链家官网的结构了解后,可以对二手房相关信息进行爬取,并且获取被隐藏的近期成交信息." 另 ...
- vba抓取网页数据到excel_R语言网页数据抓取XML数据包
有些网络上的数据无法复制粘贴,一个一个录入有点费时费力,此时用这种数据抓取方法,短短几句,简单实用.XML是一种可扩展标记语言,它被设计用来传输和存储数据.XML是各种应用程序之间进行数据传输的最常用 ...
- python爬虫百度百科-python爬虫(一)_爬虫原理和数据抓取
本篇将开始介绍Python原理,更多内容请参考:Python学习指南 为什么要做爬虫 著名的革命家.思想家.政治家.战略家.社会改革的主要领导人物马云曾经在2015年提到由IT转到DT,何谓DT,DT ...
- python中国大学排名爬虫写明详细步骤-Python爬虫--2019大学排名数据抓取
Python爬虫--2019大学排名数据抓取 准备工作 输入:大学排名URL连接 输出:大学排名信息屏幕输出 所需要用到的库:requests,bs4 思路 获取网页信息 提取网页中的内容并放到数据结 ...
- python table数据抓取_Python爬虫:数据抓取工具及类库详解
前言 文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理. 作者: ncepu_Chen PS:如有需要Python学习资料的小伙伴可以 ...
最新文章
- EasyUI-子页面增加显示tabs的一个问题
- 您有一份阿里云云原生直播攻略待查收
- 微博客户端播放器的演进之路
- 『设计模式』职责链模式(Chain of Responsibility) 可怜的加薪、请假之路
- C#解leetcode 53.Maximum Subarray
- 一夜刷屏的「猜画小歌」遭到反编译,内部还暗藏哪些玄机?
- 我的成长笔记20210324(进度把控)
- Discuz 7.0版块横排显示版块图标和版块简介的方法
- solaris系统的crontab定时任务
- 神州数码交换机建立VSF与删除VSF
- 关于 AI 边云协同解决方案的研究与讨论
- macos系统镜像iso_系统原装ISO镜像软碟通刻录启动U盘教程
- 自己追加内存【注意事项】
- 前端本地静态模板下载功能
- 转自周金涛:一辈子有三次暴富机会,最近的一次在2019年?2018年你要怎么做? (2018-02-21 17:49:17)...
- elasticsearch定时删除过期索引index
- 格林纳达常驻WTO大使孙宇晨发布声明祝贺北京冬奥会顺利召开
- 暴力破解周边Wi-Fi密码
- 搭建论坛那些小事儿(phpwind、wordpress)
- 电磁噪声论文赏析_004变频器供电对永磁电机振动噪声源的影响研究