爬虫第一次
来源:互联网 发布:编程语言 知乎 编辑:程序博客网 时间:2024/06/05 12:11
经过将近一天的琢磨,和查看资料,终于自己的第一个小爬虫出来了,很简单,但是对于我来说是一个进步
爬取的网站 妹子多啊,进去的哥们们注意啊......
早晨看了scrapy框架,本来想用框架来写的,感觉有点麻烦,就直接写了三个函数,去完成。
首先对要爬取的页面分析:
在右侧一些列的li里包含着一组图片的url,我们首先要获取到这个url,
def getPageNumber(n): url = 'http://www.mmjpg.com/home/%s' % (n) response = urllib2.urlopen(url).read() #response = HtmlResponse(url = url, body = body) urlLinks = Selector(text = response).xpath('//ul/li/span/a/@href').extract() return urlLinks
这个函数就是在获取每一个li里的具体url
接下来,当我们得到了一组这个具体的url,就要对这一组里的每一个对象进行处理了
以 .../mm/1048/2 这个url就是查看一整组图片的一张的地址
进去之后我们会发现这一组里有很多张(大概每一组都有40多张把),我们把这个查看每一组每一张的具体url找出来
def openUrlGetDetail(url): # url http://www.mmjpg.com/mm/1048/+页面内的page就可以得到 response = urllib2.urlopen(url+"/1").read() pageNumber = Selector(text = response).xpath('//div[@id="page"]/a/text()').extract() article = Selector(text = response).xpath('//div[@class="article"]/h2/text()').extract() detailUrls = [] # pageNumber 得到的是[u'1', u'2'...u'\0edv]在具体的那一页最后写的是显示全部照片 for i in range(1, int(pageNumber[-2]) + 1): urlTmp = url + '/%s' % i detailUrls.append(urlTmp) return detailUrls, article
这个函数就是拼装每一组每一张的具体url,article是获得这一组的标题,用这个标题创建一个文件夹,把每一张以article+inderx命名存到相应的文件夹
在每一个具体的页面我们可以找到一个<img src=....>这个就是图片存在的位置,通过img的src我们就可以去下载这张图片了.
def downImage(detailUrls, article): os.mkdir('/home/zs/python/splider/firstBlood/%s' % article[0]) image_store_dir = '%s%s' % ('./', article[0]) print image_store_dir # detailUrls 类似 http://www.mmjpg.com/mm/1048/2... for index, url in enumerate(detailUrls): body = urllib2.urlopen(url).read() response = HtmlResponse(url = url ,body= body) imageUrl = response.xpath('//div[@id="content"]/a/img/@src').extract() filename = image_store_dir + '/' + str(article[0]) + '%s' % (index + 1) + '.jpg' print 'downloading... %s' % filename with open(filename, 'wb') as fp: con = urllib.urlopen(imageUrl[0]) fp.write(con.read())
该函数会创建一个以article为名字的文件夹,我们的图片就会存在那里.
for i in range(1,10): urlLinks = getPageNumber(i) for url in urlLinks: detailUrls = openUrlGetDetail(url) downImage(detailUrls[0], detailUrls[1])
简单的爬了10页
然而,就在我高兴的准备去看图的时候,悲剧了.......这个网站有了反爬机制了...爬到的都是一种图片.......wuwuwuwu
图片不重要,自己学会怎么去写才重要,这是第一个小爬虫,我会继续努力...
阅读全文
0 0
- 爬虫第一次
- 爬虫第一次
- 第一次python,第一次爬虫
- python爬虫第一次练习
- 第一次爬虫,纪念下
- 第一次爬虫的经验
- 第一次做的爬虫
- 第一次写python--网络爬虫
- 记录第一次纯手打爬虫经历
- 记第一次知网爬虫实践
- 开源爬虫OpenSpider(一)----------------第一次提交
- 第一次爬虫实战--爬取糗事百科段子
- 第一次爬虫————爬取地震数据
- 第一次
- 第一次。。。
- 第一次
- 第一次
- 第一次
- 完美洗牌算法
- 201403-3 命令行选项
- 每日MySQL之007:MySQL复制之Binary Log File Position Based Replication
- QT之QStringList
- Linux改变分区表记录方式以及swap交换分区的创建
- 爬虫第一次
- 虚函数和多态
- 基于springMVC简单开发
- [主席树] Codechef: Prefix XOR
- 程序猿的一些幽默趣闻 个个经典
- Python django 入门学习系列(一)
- 利用SSH反向代理树莓派
- Vim常用快捷键
- 栈帧,反汇编解析