pythonp爬虫

pythonp微型爬虫

许多 同学 在看到一个编排十分符合自己的网站,想要把整个网页内容 一次性 导到自己的电脑上,
F12一个一个的复制十分浪费时间,
所以我做了一个pythonp微型爬虫

源代码:

# -*- coding: UTF-8 -*-
import requests  
import re 

url = "https://edu.csdn.net/topic/python115?utm_source=blogfeed14";  # 需要请求的网址
html_str = requests.get(url)  # 发送请求
# html内容
htms = re.findall(r"<a.*?>.*?</a>", html_str.text)  # 通过正则表达式 r"<a.*?>.*?</a>" 找到所有的数据并输出

for item in htms:
    print(item)

这个小爬虫只能爬取网页文字内容
是不是很鸡肋呀。

but!

下面这个爬虫就很爽了
懒虫可以试试哈

# -*- coding: UTF-8 -*-
import re
import sys
import time
  
import requests
from lxml import etree
  
import importlib
importlib.reload(sys)
  
#定义一个爬虫
class spider(object):
    def __init__(self):
        print'开始爬取内容。。。'
  
#getsource用来获取网页源代码
    def getsource(self,url):
        html = requests.get(url)
        return html.text
  
#changepage用来生产不同页数的链接
    def changepage(self,url,total_page):
        if re.search('index_(\d+)',url,re.S):
            now_page = int(re.search('index_(\d+)',url,re.S).group(1))   #可修改
        else:
            now_page = 0
        page_group = []
        for i in range(now_page,total_page+1):
            link = re.sub('index_\d+','index_%s'%i,url,re.S)       #可修改
            page_group.append(link)
        return page_group
  
#getpic用来爬取一个网页图片
    def getpic(self,source):
        selector = etree.HTML(source)
        pic_url = selector.xpath('//ul[@class="ali"]/li/div/a/img/@src')   #可修改
        return pic_url
  
#savepic用来保存结果到pic文件夹中
    def savepic(self,pic_url):
        picname=re.findall('(\d+)',link,re.S)    #可修改
        picnamestr = ''.join(picname)
        i=0
        for each in pic_url:
            print('now downloading:{}'.format(each)) 
            pic = requests.get(each)
            fp = open('pic\\'+picnamestr +'-'+str(i)+ '.jpg', 'wb')
            fp.write(pic.content)
            fp.close()
            i += 1
  
#ppic集合类的方法
    def ppic(self, link):
        print('正在处理页面:{}'.format(link))
        html = picspider.getsource(link)
        pic_url = picspider.getpic(html)
        picspider.savepic(pic_url)
  
 
if __name__ == '__main__':
    start = time.time()
    url = 'http://www.baidu.com/'   #可修改
    picspider = spider()
    all_links = picspider.changepage(url,3)     #可修改
    for link in all_links:
        picspider.ppic(link)
    end = time.time()
    print('耗时:{}'.format(start-end))

对了

使用Python3.X的童鞋门 如果出现 print XX 或 print XX 出错的话 改成 print( XX )或print ( XX )。其他类似的问题也有可能是因为这个版本问题。别问我是怎么知道的(亲身体验,改了半天才发现……

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值