通过python爬取数据
目标地址:xxxx
技术选型:python
软件包管理工具:pipenv
编辑器:jupyter
分析目标地址:
gplId表示项目ID,可变参数
结果收集方式:
数据库
代码实现
导入相关模块
from urllib.parse import urlencode
from bs4 import BeautifulSoup
import pandas as pd
import requests
import os,sys
# 网页提取函数
def get_one_page(i):
try:
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/66.0.3359.181 Safari/537.36'
}
paras = {
'a': 'x',
'b': 'x',
'c': 'x',
'd': 'x',
'e': 'x'
}
url = 'xx?' + urlencode(paras)
response = requests.get(url,headers = headers)
if response.status_code == 200:
response.encoding='utf-8'
return response.text
return None
except RequestException:
print('爬取失败')
# beatutiful soup解析然后提取表格
def parse_one_page(html):
soup = BeautifulSoup(html)
content = soup.select('.ttable')[0]
tbl = pd.read_html(content.prettify(),header = 1)[0]
tbl.rename(columns = {'序号':'serial_number',
'xx':'option',
'xx':'fanwei',
'xx':'company_name',
'xx':'shigong_date',
'xx':'order_no',
'xx':'miaomu_name',
'xx':'type',
'xx':'spec',
'xx':'count',
xx':'dead_count',
'xx':'zhongzhi_midu',
'xx':'mianji',
'xx':'unit',
'xx':'danjia',
'xx':'xiaoji',
'xx':'zhongzhididian',
'xx':'chuhuonongchang',
'xx':'remark',
'xx':'image_count',
'xx':'image'
},inplace = True)
del tbl['option']
del tbl['image_count']
del tbl['image']
return tbl
# 创建表结构
import pymysql
# 创建表结构
def generate_mysql():
conn = pymysql.connect(
host='xxxx',
user='root',
password='xxxx',
port=3307,
charset = 'utf8',
db = 'miao_mu_data')
cursor = conn.cursor()
sql = 'CREATE TABLE IF NOT EXISTS miaomu (' \
'serial_number INT(20) NOT NULL AUTO_INCREMENT,' \
'fanwei varchar(50) ,' \
'company_name VARCHAR(50) ,' \
'shigong_date varchar(50),' \
'order_no varchar(50),' \
'miaomu_name varchar(50),' \
'type varchar(50),' \
'spec varchar(50),' \
'count varchar(50),' \
'dead_count varchar(50),' \
'zhongzhi_midu varchar(50),' \
'mianji varchar(50),' \
'unit varchar(50),' \
'danjia varchar(50),' \
'xiaoji varchar(50),' \
'zhongzhididian varchar(50),' \
'chuhuonongchang varchar(50),' \
'remark varchar(50),' \
'PRIMARY KEY (serial_number))'
cursor.execute(sql)
conn.close()
# 存储到数据库
from sqlalchemy import create_engine
# 存储到数据库
def write_to_sql(tbl, db = 'miao_mu_data'):
engine = create_engine('mysql+pymysql://root:密码@ip:3307/{0}?charset=utf8'.format(db))
try:
tbl.to_sql('miaomu',con = engine,if_exists='append',index=False)
except Exception as e:
print(e)
# 主函数
import time
# 主函数
def main(page):
start_time = time.time()
for i in range(1,page):
print(i)
html = get_one_page(page)
df = parse_one_page(html)
if not df.empty:
write_to_sql(df)
# 间隔执行
time.sleep(3)
endtime = time.time()-start_time
print('程序运行了%.2f秒' %endtime)
if __name__ == '__main__':
main(100000)
# 生成表结构
# generate_mysql()
转载于:https://blog.51cto.com/suyanzhu/2394760
通过python爬取数据相关推荐
- python爬取数据时报错:`aiohttp.client_exceptions.ClientConnectorCertificateError: Cannot connect to host sea
python爬取数据时报错:aiohttp.client_exceptions.ClientConnectorCertificateError: Cannot connect to host sear ...
- Python:爬取数据出现response.status_code为403解决方法
目录 前言 1. 原理 2. 代码 前言 出现403的返回结果 主要是有些服务器为了防止访问量过大,承受服务器的压力,或者是拒绝你的访问.服务器接收到这个信息,理应返回了这个403的信息 在前一块的代 ...
- Python爬取数据存储到本地文本文件
前面说过Python爬取的数据可以存储到文件.关系型数据库.非关系型数据库.前面两篇文章没看的,可快速戳这里查看!https://mp.weixin.qq.com/s/A-qry4r3ymuCLXLB ...
- Python爬取数据:翻页操作
Python爬取视频在上一章已经实现,如果爬取数据的时候发现不止一页数据,而是很多页数据的时候,我们就需要爬虫自行翻页操作继续获取另一页的数据.那么如何实现的翻页操作是本章主要描述内容. 该文章爬取数 ...
- 如何用python爬取数据_如何使用python爬取知乎数据并做简单分析
原标题:如何使用python爬取知乎数据并做简单分析 一.使用的技术栈: 爬虫:python27 +requests+json+bs4+time 分析工具: ELK套件 开发工具:pycharm 数据 ...
- python 爬取数据还要下载scrapy吗_python网络爬虫之Scrapy
本文分享的大体框架包含以下三部分 (1)首先介绍html网页,用来解析html网页的工具xpath (2)介绍python中能够进行网络爬虫的库(requests,lxml,scrapy等) (3)从 ...
- python爬取数据热点词生成词云
这是当时在中国mooc学 用python玩转数据 时,写的一个小demo. 程序实现步骤 1.从某一网站爬取数据,比如我是在豆瓣爬取的书评 利用Requests库的get()爬取网页 使用Beatif ...
- Python爬取数据并写入MySQL
关于爬虫爬取数据并存入MySQL数据库(以东方财富网上的股票数据为例,网页:深南电A(000037)资金流向 _ 数据中心 _ 东方财富网) 第一步,创建数据库中的数据表 import request ...
- python爬取数据保存为txt格式
#encoding:'utf-8' import urllib.request from bs4 import BeautifulSoup import os import time #找到网址 de ...
- python爬取数据保存为csv时生成编号_将爬取到到数据以CSV格式存储
CSV文件存储 CSV,全称为Comma-Separated Values,中文可以叫做逗号分隔值或字符分隔值,其文件以纯文本形式存储表格数据.该文件是一个字符序列,可以由任意数目的记录组成,记录间以 ...
最新文章
- 利用 Python 打造一个语音合成系统
- 再爆安全漏洞,这次轮到Jackson了,竟由阿里云上报
- 继承SectionIndexer,实现联系人侧边栏
- 动态链接到MFC的DLL(转)
- dcf是ea211发动机吗_大众有的车怎么把ea211换成dcf了?
- solaris 源代码
- python渲染html 库_在Python中使用CasperJS获取JS渲染生成的HTML内容的教程
- 谈谈苹果应用内支付(IAP)的坑
- 最小的语言符号是A词B语素C音素D义素,[转载]语言学概论试题 答案
- 写论文的第三天 自建zookeeper集群
- 在HTML中取得请求中的参数
- 用Python强制子类重写父类,如此简单就能做到
- Flash 用FLASH遮罩效果做图片切换效果
- java oracle数据备份_Java实现Oracle数据库备份
- 手机变速齿轮_变速齿轮手机版下载|变速齿轮游戏加速器官方最新版v1.2下载 _当游网...
- 银行会计学3(特点、核算的前提假设、对象和标准)
- kail如何进入root_Kali初次使用如何获得root权限
- 公司企业邮箱怎么登录?这些安全登录邮箱的方法你要知道
- 解决C#读取文本文件乱码
- H5,Audio音乐播放器(移动版)
热门文章
- 支持向量机的基本原理
- 5.2.1.开启驱动开发之路
- Sublime Text 3总是出现“1 missing dependency was just installed.”
- IP地址子网掩码位数换算方法及解释子网掩码的作用
- Linux vgchange 命令
- NIO_通道之间传输数据
- centos下安装JAVA开发工具(1)------JDK
- git-osc自己定义控件之:CircleImageView
- Java Programming Test Question 2
- MySQL主从同步相关-主从多久的延迟?