Python菜鸟做简单爬虫求思路指导
python菜鸟 想做一个简单的爬虫 求教程 ps:一般公司做爬虫采集的话常用什么语言
网终上确实有许多的关于Python如何写一个简单爬虫的文章,但这些文章大多只能算是一个例子,能真正应用的还是挺少的。爬虫我认为就是获取内容、分析内容、再存储就OK了,如果只是才接触的话,可以直接Google之就行了。如果是深入的研究的话,可以在Github上找找代码来看下。
我自己对于Python也只是一知半解,希望有所帮助。
简单的,不用框架的,可以看看requests和beautifulsoup这两个库,如果熟悉python语法,看完这两个,差不多能写个简单的爬虫了。
一般公司搞爬虫,我见过的,多用java或者python。
可以看看我的资料scrapy
简单的爬虫,其实用框架最简单了,看看网上的入门贴
推荐scrapy
http://cuiqingcai.com/1052.html
最近在学习Python爬虫,感觉非常有意思,真的让生活可以方便很多。学习过程中我把一些学习的笔记总结下来,还记录了一些自己实际写的一些小爬虫,在这里跟大家一同分享,希望对Python爬虫感兴趣的童鞋有帮助,如果有机会期待与大家的交流。
一、Python入门
二、Python实战
三、Python进阶
目前暂时是这些文章,随着学习的进行,会不断更新哒,敬请期待~
希望对大家有所帮助,谢谢!
转载请注明:静觅 » Python爬虫学习系列教程
https://github.com/binux/pyspider
Powerful WebUI with script editor, task monitor, project manager and result viewer
直接给题主贴一个可以使用的抓取脚本吧,目的是获取豆瓣正在上映影片的豆瓣id和影片标题,脚本依赖于beautifulsoup库,需要安装,beautifulsoup中文文档
补充:如果题主是希望构建一个能对站点进行抓取或者可以自定义抓取指定页面这类真正的爬虫程序的话,还是推荐题主研究 scrapy
抓取python示例代码:
#!/usr/bin/env python
#coding:UTF-8
import urllib
import urllib2
import traceback
from bs4 import BeautifulSoup
from lxml import etree as ET
def fetchNowPlayingDouBanInfo():
doubaninfolist = []
try:
#使用proxy时,请取消屏蔽
# proxy_handler = urllib2.ProxyHandler({"http" : '172.23.155.73:8080'})
# opener = urllib2.build_opener(proxy_handler)
# urllib2.install_opener(opener)
url = "http://movie.douban.com/nowplaying/beijing/"
#设置http-useragent
useragent = {'User-Agent':'Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/31.0.1650.57 Safari/537.36'}
req = urllib2.Request(url, headers=useragent)
page = urllib2.urlopen(req, timeout=10)
html_doc = page.read()
soup = BeautifulSoup(html_doc, "lxml")
try:
nowplaying_ul = soup.find("div", id="nowplaying").find("ul", class_="lists")
lilist = nowplaying_ul.find_all("li", class_="list-item")
for li in lilist:
doubanid = li["id"]
title = li["data-title"]
doubaninfolist.append({"douban_id" : doubanid, "title" : title, "coverinfolist" : [] })
except TypeError, e:
print('(%s)TypeError: %s.!' % (url, traceback.format_exc()))
except Exception:
print('(%s)generic exception: %s.' % (url, traceback.format_exc()))
except urllib2.HTTPError, e:
print('(%s)http request error code - %s.' % (url, e.code))
except urllib2.URLError, e:
print('(%s)http request error reason - %s.' % (url, e.reason))
except Exception:
print('(%s)http request generic exception: %s.' % (url, traceback.format_exc()))
return doubaninfolist
if __name__ =="__main__":
doubaninfolist = fetchNowPlayingDouBanInfo()
print doubaninfolist
抓取内容可以使用 urllib/urllib2/requests,推荐requests。
分析内容可以使用 BeautifulSoup,也可以使用正则或者暴力的字符串解析。
这里有个现有的例子,你可以参考一下:
如何爬取大众点评网上的商家信息(有栗子、附代码)
Scrapy是比较好的选择,相对比较简单,这里有入门教程
简单的话可以用:获取网页可以用beautifulsoup,正则,urllib2,来获取
深入的话,可以看一些开源框架,比如Python的scrapy等等
也可以看看一些视频教程,比如极客学院的
一句话,多练。。。
Python
的Scrapy
写爬虫非常棒,附上我写的一个非常简单的福利爬虫
https://github.com/ZhangBohan/fun_crawler
一般网页以上两点就可以了,对于ajax请求的网站,你可能爬不到想要内容,去找他的Api可能更方便。
可以先用一个爬虫框架实现业务逻辑,如scrapy,然后根据自己的需求,慢慢的替换掉框架。最后,你就会发现, 你自己实现了一个爬虫框架
贴一段爬天猫的代码:
def areaFlow(self, parturl, tablename, date):
while True:
url = parturl + self.lzSession + '&days=' + str(date) + '..' + str(date)
print url
try:
html = urllib2.urlopen(url, timeout=30)
except Exception, ex:
writelog(str(ex))
writelog(str(traceback.format_exc()))
break;
responegbk = html.read()
try:
respone = responegbk.encode('utf8')
except Exception, ex:
writelog(str(ex))
# 如果lzSession过期则会返回errcode:500的错误
if respone.find('"errcode":500') != -1:
print 'nodata'
break;
# 如果时间不对则返回errcode:100的错误
elif respone.find('"errcode":100') != -1:
print 'login error'
self.catchLzsession()
else:
try:
resstr = re.findall(r'(?<=\<)(.*?)(?=\/>)', respone, re.S)
writelog('地域名称 浏览量 访问量')
dictitems = []
for iarea in resstr:
items = {}
areaname = re.findall(r'(?<=name=\\\")(.*?)(?=\\\")', iarea, re.S)
flowamount = re.findall(r'(?<=浏览量:)(.*?)(?=<)', iarea, re.S)
visitoramount = re.findall(r'(?<=访客数:)(.*?)(?=\\\")', iarea, re.S)
print '%s %s %s' % (areaname[0], flowamount[0], visitoramount[0])
items['l_date'] = str(self.nowDate)
items['vc_area_name'] = str(areaname[0])
items['i_flow_amount'] = str(flowamount[0].replace(',', ''))
items['i_visitor_amount'] = str(visitoramount[0].replace(',', ''))
items['l_catch_datetime'] = str(self.nowTime)
dictitems.append(items)
writeInfoLog(dictitems)
insertSqlite(self.sqlite, tablename, dictitems)
break
except Exception,ex:
writelog(str(ex))
writelog(str(traceback.format_exc()))
time.sleep(1)
scrapy 节约你大量时间
github上有很多例子
If you just want a spider that works
http://segmentfault.com/blog/eric/1190000002543828
百度搜索python + 爬虫
以前学习的时候整理的一份教程:
爬取Konachan上面的动漫图片,这个是我刚学爬虫的时候做的,入门看看还凑活
玩蛇网文章,转载请注明出处和文章网址:https://www.iplaypy.com/wenda/wd18969.html
相关文章 Recommend
- • 2019年3月最新消息: Python 3.4.10 现已推出
- • [上海]招Python量化系统开发工程师
- • 优集品网络科技有限公司招Python中/高级工程师
- • 爱因互动科技发展有限公司招募Python开发攻城狮
- • mozio招聘Python/Django工程师
- • Kavout金融科技公司招Python研发工程师
- • Python数组逆向输出,编程练习题实例四十
- • Python数组插入排序,编程练习题实例三十九
- • Python矩阵for循环应用,编程练习题实例三十八
- • Python操作Redis数据库方面的问题
- • 请python高手帮我看看这段python代码中函数setter的
- • Python什么方法可以快速将两个队列变成字典
必知PYTHON教程 Must Know PYTHON Tutorials
- • python 解释器
- • python idle
- • python dir函数
- • python 数据类型
- • python type函数
- • python 字符串
- • python 整型数字
- • python 列表
- • python 元组
- • python 字典
- • python 集合
- • python 变量
- • python print
- • python 函数
- • python 类定义
- • python import
- • python help
- • python open
- • python 异常处理
- • python 注释
- • python continue
- • python pass
- • python return
- • python global
- • python assert
- • python if语句
- • python break
- • python for循环
- • python while循环
- • python else/elif
- • lambda匿名函数
必知PYTHON模块 Must Know PYTHON Modules
- • os 模块
- • sys 模块
- • re 正则表达式
- • time 日期时间
- • pickle 持久化
- • random 随机
- • csv 模块
- • logging 日志
- • socket网络通信
- • json模块
- • urlparse 解析URL
- • urllib 模块
- • urllib2 模块
- • robotparser 解析
- • Cookie 模块
- • smtplib 邮件
- • Base64 编码
- • xmlrpclib客户端
- • string 文本
- • Queue 线程安全
- • math数学计算
- • linecache缓存
- • threading多线程
- • sqlite3数据库
- • gzip压缩解压
最新内容 NEWS
- • django app提供pv信息的方法是什么
- • Django项目版本升级如何操作?
- • django较多数据传递如何优雅的呈现
- • django1.7获取参数问题求助
- • Django1.7使用内置comment遇到问题
- • python mysql数据库做insert操作时报_mysql_ex
- • 关于python mysql的duplicate insert机制的疑问
- • pymongo使用insert函数批量插入被中断要怎么
- • Python程序员解决棘手问题的常用库
- • 求助关于restfull api接口几个问题
图文精华 RECOMMEND
-
django1.7获取参数问题求助
-
Python程序员解决棘手问题的常用库
-
求问str()同__str__原理上有什么不同
-
scrapy框架里面用link extractor怎么能
-
python {}.fromkeys创建字典append添加操
-
python3 类型Type str doesn't support th
热点文章 HOT
- 学习Python有什么好的书籍推荐?
- Python匿名函数 Lambda表达式作用
- Python与Java、C、Ruby、PHP等编程语言有什么
- Python 正则中文网页字符串提取问题
- 如何为实时性应用存取经纬度?django my
- 想用python做个客户端,在二维码登录这个地
- 有让IDE可识别Python函数参数类型的方法吗
- Python字符串转换成列表正则疑问