Python爬虫实战(2)——抓取知乎热门帖并存储到Mysql数据库

首先了解一些基础性的理解知识:

python基础知识——正则表达式,_MISAYAONE的博客-CSDN博客   正则表达式

Python基础知识——爬虫入门_MISAYAONE的博客-CSDN博客_python基础和网络爬虫    爬虫入门

http://blog.csdn.net/misayaaaaa/article/details/53079953mysql      数据库相关

样例代码(有详细注释):

#coding=utf-8
import urllib2
import re
import MySQLdb

conn = MySQLdb.connect(host='localhost', db='test', user='root', passwd='root1',charset='utf8')
#connect()方法用于创建与数据库的连接,里面可以指定参数,这一步只是连接到了数据库,操作数据库还需要下面的游标
cur = conn.cursor()#通过获取到的conn数据库的cursor方法创建游标

url = 'http://www.zhihu.com/topic/19607535/top-answers'
netthings= urllib2.urlopen(url).read()
print netthings  #使用urllib2模块爬虫抓取了特定网页

list = re.findall('<a class="question_link"(.*?)/a>', netthings, re.S)
#re模块的findall方法可以以列表的形式返回匹配的字符串,re.S表示多行匹配
print list  #使用re模块的正则表达式,将目标字符串存入list
#正则表达式的匹配也是一个难点
p = '>(.*?)<'
for x in list:
    title = re.search(p, x, re.S).group(1)
    hot = "insert into test(title) values('%s')" % title
    print hot
    cur.execute(hot)
    conn.commit()  #提交数据进数据库
conn.close()  #关闭数据库连接

cmd中查看表单的结果:

在这其中遇到了很多的问题,一一分享出来:

1、Mysql创建、查看、删除对应表单。

创建:create table命令用来创建数据表。

create table命令格式:create table <表名> (<字段名1> <类型1> [,..<字段名n> <类型n>]);

例如,建立一个名为MyClass的表:

字段名数字类型数据宽度是否为空是否主键自动增加默认值
idint4primary keyauto_increment
namechar20
sexint40
degreedouble16

在这题中,创建了一个test表:create table test(title char(200));       (注意需要在use database之后)

查看表单内容    select * from test;     查询test数据表中的所有数据

删除表   DROP TABLE test;   将表单test删除

2、

# -*- coding: utf-8 -*-       
#mysqldb      
import time, MySQLdb      
     
#连接      
conn=MySQLdb.connect(host="localhost",user="root",passwd="root",db="test",charset="utf8")    
cursor = conn.cursor()      
  
#删除表  
sql = "drop table if exists user"  
cursor.execute(sql)  
  
#创建  
sql = "create table if not exists user(name varchar(128) primary key, created int(10))"  
cursor.execute(sql)  
  
#写入      
sql = "insert into user(name,created) values(%s,%s)"     
param = ("aaa",int(time.time()))      
n = cursor.execute(sql,param)      
print 'insert',n      
     
#写入多行      
sql = "insert into user(name,created) values(%s,%s)"     
param = (("bbb",int(time.time())), ("ccc",33), ("ddd",44) )  
n = cursor.executemany(sql,param)      
print 'insertmany',n      
  
#更新      
sql = "update user set name=%s where name='aaa'"     
param = ("zzz")      
n = cursor.execute(sql,param)      
print 'update',n      
     
#查询      
n = cursor.execute("select * from user")      
for row in cursor.fetchall():      
    print row  
    for r in row:      
        print r      
     
#删除      
sql = "delete from user where name=%s"     
param =("bbb")      
n = cursor.execute(sql,param)      
print 'delete',n      
  
#查询      
n = cursor.execute("select * from user")      
print cursor.fetchall()      
  
cursor.close()      
     
#提交      
conn.commit()  
#关闭      
conn.close()  

一个简单的样例,学习python对mysql的操作。

3、运行出错: ERROR 1045 (28000): Access denied for user 'mysql'@'localhost' (using password: NO)

这个问题的话肯定是你把下面的给弄错了,也就是用户和密码,google一下怎么改密码就好了。

user="root",passwd="root"

4、python连接mysql数据库,出现:(2003, "Can't connect to MySQL server on 'localhost' (10061)"

conn=MySQLdb.connect(host="localhost",user="root",passwd="root",db="test",charset="utf8")    

将localhost改为127.0.0.1。

爬虫(Web Crawler)是一种自动化程序,用于从互联网上收集信息。其主要功能是访问网页、提取数据并存储,以便后续分析或展示。爬虫通常由搜索引擎、数据挖掘工具、监测系统等应用于网络数据抓取的场景。 爬虫的工作流程包括以下几个关键步骤: URL收集: 爬虫从一个或多个初始URL开始,递归或迭代地发现新的URL,构建一个URL队列。这些URL可以通过链接分析、站点地图、搜索引擎等方式获取。 请求网页: 爬虫使用HTTP或其他协议向目标URL发起请求,获取网页的HTML内容。这通常通过HTTP请求库实现,如Python中的Requests库。 解析内容: 爬虫对获取的HTML进行解析,提取有用的信息。常用的解析工具有正则表达式、XPath、Beautiful Soup等。这些工具帮助爬虫定位和提取目标数据,如文本、图片、链接等。 数据存储爬虫将提取的数据存储数据库、文件或其他存储介质中,以备后续分析或展示。常用的存储形式包括关系型数据库、NoSQL数据库、JSON文件等。 遵守规则: 为避免对网站造成过大负担或触发反爬虫机制,爬虫需要遵守网站的robots.txt协议,限制访问频率和深度,并模拟人类访问行为,如设置User-Agent。 反爬虫应对: 由于爬虫的存在,一些网站采取了反爬虫措施,如验证码、IP封锁等。爬虫工程师需要设计相应的策略来应对这些挑战。 爬虫在各个领域都有广泛的应用,包括搜索引擎索引、数据挖掘、价格监测、新闻聚合等。然而,使用爬虫需要遵守法律和伦理规范,尊重网站的使用政策,并确保对被访问网站的服务器负责。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

MISAYAONE

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值