`
desert3
  • 浏览: 2160486 次
  • 性别: Icon_minigender_1
  • 来自: 合肥
社区版块
存档分类
最新评论

使用python抓取某网站数据

阅读更多

任务:抓取某网站数据(物品,参数,图片)

近来对于 python 的学习热情比较高,感觉用起来比较方便,效率也好,就决定采用 python 来做上述任务, Mysql 来存储数据。

 

Mysql 版本:

mysql-5.1.35-win32.msi 管理工具: Navicat for MySQL

 

相关模块:

Python 2.5 + MySQLdb MySQL-python-1.2.2.win32-py2.5.exe + BeautifulSoup 3.0

python 2.5Windows 安装版下载地址:

http://www.python.org/ftp/python/2.5/python-2.5.msi

MySQLdb 下载地址:

http://sourceforge.net/projects/mysql-python/files/mysql-python/1.2.2/MySQL-python-1.2.2.win32-py2.5.exe/download

BeautifulSoup 下载地址:

http://www.crummy.com/software/BeautifulSoup/download/3.x/BeautifulSoup-3.0.0.py

BeautifulSoup 官网文档:

http://www.crummy.com/software/BeautifulSoup/documentation.zh.html

 

程序中使用的模块:

traceback traceback.format_exc() 处理异常时输出错误日志

urllib2 :通过 url 访问相应网站(设置 HTTP 代理防止被网站封IP导致无法访问)

urlparse urlparse.urlparse url 解析成六部分,方便处理

urlparse.urljoin(baseUrl, relativeUrl) 根据既存的绝对 URL ,把一相对 URL 转换成相应的决定 URL (当抓取网站中 link 等链接使用相对路径,可以非常方便地取得 link 对应的绝对路径 URL

os os.path.exists 路径是否存在

os.path.join 把路径和文件名称合成新的路径

os.sep 操作系统分隔符

       os.makedirs 创建多层次的目录

os.makedir() 创建当层目录

time time.strftime('%Y-%m-%d %H:%M:%S',time.localtime(time.time())) 取得当前时间

 

3 天半的开发过程中出现了不少问题,记录如下:

1, MySQLdb 使用不了。

由于 MySQLdb 作者不提供对 Windows 平台 python2.7 的安装包,作为新手没有办法就只好退回使用 python2.5

2, 下载了 BeautifulSoup 后不知道怎么使用

使用 BeautifulSoup 时只需要下载 BeautifulSoup-3.0.0.py 这个文件(注意下载后把版本号删除,这样使用时 import BeautifulSoup 才不会出错【 python 文件的文件名就是模块名】)

文件名中删除了 -3.0.0 后, pydev 中报错,不知道什么原因,但可以正常导入使用

3,  MySQLdb 控制事务时发现不起作用

检查: 1 ,数据库创建时是否允许使用事务 2 ,表创建时是否允许支持事务 InnoDB

4,  程序报错: Error No. 1130 Host 'x.x.x.x' is not allowed to connect to this MySQL server

这是由于 mysql 服务端 root 用户所对应的客户端权限设置问题(安装 mysql 时注意选择允许通过 ip 访问数据库)。默认所对应的客户端地址只有 localhost (也就是服务端的机器),所以要增加相应的地址。下面增加任何地址都可以访问 mysql 服务端的 root 用户

# mysql

mysql> grant all privileges on *.* to 'root'@'%' identified by '123456';

或者 mysql> grant all privileges on *.* to 'root'@'192.168.1.1' identified by '123456' with grant option;

mysql> flush privileges;

mysql> exit

5, 程序报错: Error Nr. 1045 Access denied for user"root@COMPUTERNAME"(using password: NO)

Root 用户没有密码不让访问,设置密码为 123456

SET PASSWORD FOR 'root'@'localhost' = PASSWORD('123456');

6, 程序插入,读取数据到 mysql 都是乱码

Python 文件设置编码 utf-8 (文件前面加上 # -*- coding: utf-8 -*-)

Python 文件保存时的编码utf-8

MySQL 数据库 charset=utf-8

Python 连接 MySQL 是加上参数 charset=utf8

7, eclipse 插件pydev 中正常,迁移到命令行执行后,显示编码错误,程序无法执行。

追加如下代码:

import sys

 

# 兼容命令行执行

default_encoding = 'utf-8'

if sys.getdefaultencoding() != default_encoding:

    reload(sys)

sys.setdefaultencoding (default_encoding)

8, 代码内部的中文字符串在命令行中显示乱码

使用中文字符串的地方,在字符串前面追加 u ,表明这是 1 unicode 字符串,如u'总共’

9, eclipse 插件pydev setdefaultencoding 不存在,但是却能正常执行

python 解释器启动时会自动删除 sys 模块的 setdefaultencoding() 方法 , 使得运行时不能调用 , 所以需要通过 reload(sys) 重新加载

python 2.3 以后的默认编码是 ascii

python3 .0 开始默认编码为 utf-8

10, 报错: OperationalError: (1040, 'Too many connections')

发现 mysql 的默认最大连接数为 100 ,出现上述错误的原因mysql事务控制时连接没有及时释放掉

查看 mysql 当前活动的连接:到 mysql 安装目录的 bin 文件夹下运行

mysqladmin -uroot -p123456 -h192.168.3.79 processlist

0
0
分享到:
评论

相关推荐

    Python数据抓取技术与实战.pdf

    2. Python抓取库选择: - requests库:用于发送HTTP请求,如GET、POST,是抓取网页的基本工具。 - Beautiful Soup库:用于解析HTML和XML文档,能处理复杂的页面,方便地提取数据。 - Scrapy框架:是一个快速高...

    python抓取淘宝天猫网页商品详情Demo.zip

    本项目"python抓取淘宝天猫网页商品详情Demo.zip"是一个利用Python进行网络数据抓取的示例,主要涉及到以下几个核心知识点: 1. **网络请求库**:在Python中,我们通常使用如`requests`库来发送HTTP请求,获取网页...

    基于python的NBA球员数据可视化分析

    在这个项目中,可能使用了这些库中的某一个或多个来抓取NBA球员的相关数据,如球员的名字、球队、身高、体重、赛季统计数据等。网络爬虫通过解析HTML或JSON格式的网页内容,将所需数据提取出来,形成原始的数据集。 ...

    基于python的基于旅游网站的数据分析及可视化系统(flask).zip

    1. 数据获取:使用Python的requests库或者其他爬虫技术从旅游网站抓取数据,或者直接连接到已有的数据库进行读取。 2. 数据预处理:使用Pandas进行数据清洗,处理缺失值、异常值,进行数据类型转换等。 3. 数据分析...

    Python学习笔记之抓取某只基金历史净值数据实战案例

    我们将使用Python的Selenium库来模拟浏览器行为,抓取页面数据,然后利用MySQL进行数据存储。以下是一些关键知识点: 1. **Selenium库**:Selenium 是一个用于 Web 应用程序测试的工具,同时也常被用于网页数据抓取...

    Python实现天天基金数据爬取

    总的来说,Python爬虫技术在金融数据获取中有广泛应用,通过学习"Python实现天天基金数据爬取"项目,你可以掌握到网络数据抓取、网页解析、数据存储等关键技能,这对于数据分析、投资决策或者金融研究都是非常有价值...

    Python拉取zabbix数据并使用matplotlib绘图

    利用python3请求zabbix_api接口,抓取某主机某监控项在某短时间的历史数据,并利用matplotlib绘制图形

    用python爬取网页并导出为word文档.docx

    总之,通过Python爬虫抓取网页内容,再利用MongoDB的文档型数据库特性存储数据,可以有效地管理和组织Web应用的数据,同时利用MongoDB的查询功能实现高效的数据检索。这种组合方式在处理结构不固定、数据量较大的Web...

    Python技术数据抓取方法.docx

    Python 技术在数据抓取领域扮演着至关重要的角色,其简洁的语法和丰富的库使得数据获取变得简单高效。在本文中,我们将深入探讨几种常用的数据抓取方法,包括网络请求、HTML解析、API调用以及数据库操作。 首先,...

    基于python实现Pandas提取指定数据并保存在原Excel工作簿中

    例如,我们可能只想保留某列值大于某个阈值的行。这可以通过布尔索引来实现: ```python # 筛选条件,假设我们要筛选'年龄'列大于30的行 filtered_df = df[df['年龄'] > 30] ``` 在提取了所需数据后,可能希望将...

    Python爬虫爬取某网站数据

    Python爬虫技术是一种用于自动化网页数据抓取的工具,它能够高效地遍历网页,提取所需信息。在本示例中,我们关注的是使用Scrapy框架来实现这一目标。Scrapy是一个强大的Python爬虫框架,它提供了丰富的功能,如请求...

    浅析Python爬虫获取数据实现调查研究的应用.zip

    本文将详细探讨Python爬虫的基础知识、如何使用Python爬虫抓取网络数据,以及在实际调查研究中如何运用这些数据。 首先,Python爬虫是利用Python编程语言编写的程序,用于自动化地从互联网上抓取大量信息。Python因...

    Python微博爬虫,批量获取指定账号数据

    在Python编程领域,爬虫是一项常见的任务,尤其在社交媒体数据挖掘中扮演着重要角色。本教程将探讨如何使用Python编写一个微博爬虫,批量获取指定账号的数据。由于微博平台不断更新其技术,防止非法抓取数据,因此...

    Python爬取猫眼豆瓣数据

    在本项目中,"Python爬取猫眼豆瓣数据"是一个典型的Web数据抓取任务,主要涉及Python编程语言以及网络爬虫技术。通过Python编写爬虫程序,我们可以从猫眼电影和豆瓣电影等网站获取相关数据,如电影名称、评分、评论...

    精选_基于python实现的某东手机评论数据采集与分析爬虫_源码打包

    本项目“精选_基于python实现的某东手机评论数据采集与分析爬虫_源码打包”聚焦于利用Python编程语言来实现对某电商平台(如京东,简称“某东”)手机评论数据的抓取和分析。以下将详细阐述这个项目中的关键知识点。...

    python批量从上市公司年报中获取指定内容.rar

    在Python编程领域,批量处理是一项常见的任务,尤其在大数据分析和信息提取中。在这个特定的案例中,我们关注的是从上市公司的年度报告中提取特定信息。这个任务涉及到文本挖掘、自然语言处理(NLP)以及可能的数据...

    pm2.5爬虫python代码

    标题 "pm2.5爬虫python代码" 描述了如何使用Python编程语言编写一个网络爬虫,目的是抓取不同城市的PM2.5空气质量指数数据。PM2.5是指大气中直径小于或等于2.5微米的颗粒物,对环境和人体健康有显著影响。这种数据...

    Python爬虫源码—爬取猫途鹰官方旅游网站信息

    本项目是关于使用Python爬虫来抓取猫途鹰(TripAdvisor)官方网站上的旅游信息,包括酒店和景点的详情,以及相关的用户评论。下面将详细介绍这个项目涉及的关键知识点。 1. **Python基础**:首先,了解Python编程...

    python爬虫抓取哪儿网页上的一些字段

    Python爬虫技术是一种用于自动化获取网页内容的编程方法,它能帮助我们从互联网上抓取大量数据,尤其在处理非结构化数据时显得尤为高效。本教程将通过一个名为"catch.py"的Python脚本来讲解如何抓取网页上的特定字段...

    基于python+appium的android微信自动添加好友及爬取其朋友圈的爬虫.zip

    在这个项目中,爬虫可能使用了Selenium库,与Appium相结合,实现了对微信应用内部页面的交互和数据抓取。 “python”标签确认了主要编程语言为Python,Python因其简洁明了的语法和丰富的第三方库而常被用于爬虫开发...

Global site tag (gtag.js) - Google Analytics