昨天投简历的时候,有个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'

估计这个还是凉了,两天了都不带理人的,哎,难搞哦。

政府采购项目数据抓取相关推荐

  1. 关于Python爬虫原理和数据抓取1.1

    为什么要做爬虫? 首先请问:都说现在是"大数据时代",那数据从何而来? 企业产生的用户数据:百度指数.阿里指数.TBI腾讯浏览指数.新浪微博指数 数据平台购买数据:数据堂.国云数据 ...

  2. 北京弘易信泰 网络数据抓取技术实践分享

    弘易信泰,作为大数据产品厂商,长期关注业界数据抓取技术的变化,当前,互联网数据以前所未有的态势迅猛增长,对于信息化技术而言,海量数据的抓取技术尤为重要,在数据迅速发展的大背景下,中国政府与企业类型的信 ...

  3. 基于Hadoop的豆瓣电影的数据抓取、数据清洗、大数据分析(hdfs、flume、hive、mysql等)、大屏可视化

    目录 项目介绍 研究背景 国内外研究现状分析 研究目的 研究意义 研究总体设计 数据获取 网络爬虫介绍 豆瓣电影数据的采集 数据预处理 数据导入及环境配置 Flume介绍 Hive介绍 MySQL介绍 ...

  4. Python学习笔记——爬虫原理与Requests数据抓取

    目录 为什么要做网络爬虫? 通用爬虫和聚焦爬虫 HTTP和HTTPS 客户端HTTP请求 请求方法 HTTP请求主要分为Get和Post两种方法 常用的请求报头 1. Host (主机和端口号) 2. ...

  5. 干货!链家二手房数据抓取及内容解析要点

    "本文对链家官网网页进行内容分析,可以作为一般HTTP类应用协议进行协议分析的参考,同时,对链家官网的结构了解后,可以对二手房相关信息进行爬取,并且获取被隐藏的近期成交信息." 另 ...

  6. vba抓取网页数据到excel_R语言网页数据抓取XML数据包

    有些网络上的数据无法复制粘贴,一个一个录入有点费时费力,此时用这种数据抓取方法,短短几句,简单实用.XML是一种可扩展标记语言,它被设计用来传输和存储数据.XML是各种应用程序之间进行数据传输的最常用 ...

  7. python爬虫百度百科-python爬虫(一)_爬虫原理和数据抓取

    本篇将开始介绍Python原理,更多内容请参考:Python学习指南 为什么要做爬虫 著名的革命家.思想家.政治家.战略家.社会改革的主要领导人物马云曾经在2015年提到由IT转到DT,何谓DT,DT ...

  8. python中国大学排名爬虫写明详细步骤-Python爬虫--2019大学排名数据抓取

    Python爬虫--2019大学排名数据抓取 准备工作 输入:大学排名URL连接 输出:大学排名信息屏幕输出 所需要用到的库:requests,bs4 思路 获取网页信息 提取网页中的内容并放到数据结 ...

  9. python table数据抓取_Python爬虫:数据抓取工具及类库详解

    前言 文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理. 作者: ncepu_Chen PS:如有需要Python学习资料的小伙伴可以 ...

最新文章

  1. EasyUI-子页面增加显示tabs的一个问题
  2. 您有一份阿里云云原生直播攻略待查收
  3. 微博客户端播放器的演进之路
  4. 『设计模式』职责链模式(Chain of Responsibility) 可怜的加薪、请假之路
  5. C#解leetcode 53.Maximum Subarray
  6. 一夜刷屏的「猜画小歌」遭到反编译,内部还暗藏哪些玄机?
  7. 我的成长笔记20210324(进度把控)
  8. Discuz 7.0版块横排显示版块图标和版块简介的方法
  9. solaris系统的crontab定时任务
  10. 神州数码交换机建立VSF与删除VSF
  11. 关于 AI 边云协同解决方案的研究与讨论
  12. macos系统镜像iso_系统原装ISO镜像软碟通刻录启动U盘教程
  13. 自己追加内存【注意事项】
  14. 前端本地静态模板下载功能
  15. 转自周金涛:一辈子有三次暴富机会,最近的一次在2019年?2018年你要怎么做? (2018-02-21 17:49:17)...
  16. elasticsearch定时删除过期索引index
  17. 格林纳达常驻WTO大使孙宇晨发布声明祝贺北京冬奥会顺利召开
  18. 暴力破解周边Wi-Fi密码
  19. 搭建论坛那些小事儿(phpwind、wordpress)
  20. 电磁噪声论文赏析_004变频器供电对永磁电机振动噪声源的影响研究

热门文章

  1. 小组作业:糖尿病预测
  2. Dp线性01背包问题
  3. 深入学习setState
  4. 蜂客云会员系统——手机管会员
  5. 【计几】曼哈顿距离与切比雪夫距离
  6. dumpbin发现没有入口函数_Dumpbin查看的dll/lib导出函数,不能重定向到文件问题
  7. 【商城应用】商城搜索流程
  8. access数据库SQL复制表
  9. 2016年,我装了台电脑
  10. Linux 配置Nginx环境变量Nginx常用命令