精华内容
下载资源
问答
  • python实现并行爬虫

    2015-09-07 20:10:18
    指定爬虫depth、线程数, python实现并行爬虫
  • Python简单实现爬虫实例

    千次阅读 2019-05-15 10:07:38
    下载图片的步骤如下: ... ... 根据图片的url链接列表将图片下载到本地文件夹中。 urllib+re实现: .../usr/bin/python ...# 实现一个简单的爬虫,爬取百度贴吧图片 import urllib import re # 根据url获取网页htm...

    下载图片的步骤如下:

    1. 获取网页html文本内容;
    2. 分析html中图片的html标签特征,用正则解析出所有的图片url链接列表;
    3. 根据图片的url链接列表将图片下载到本地文件夹中。

    urllib+re实现:

    #!/usr/bin/python
    # coding:utf-8
    # 实现一个简单的爬虫,爬取百度贴吧图片
    import urllib
    import re

    # 根据url获取网页html内容
    def getHtmlContent(url):
        page = urllib.urlopen(url)
        return page.read()

    # 从html中解析出所有jpg图片的url
    # 百度贴吧html中jpg图片的url格式为:<img ... src="XXX.jpg" width=...>
    def getJPGs(html):
        # 解析jpg图片url的正则
        jpgReg = re.compile(r'<img.+?src="(.+?\.jpg)" width')  # 注:这里最后加一个'width'是为了提高匹配精确度
        # 解析出jpg的url列表
        jpgs = re.findall(jpgReg,html)
        
        return jpgs

    # 用图片url下载图片并保存成制定文件名
    def downloadJPG(imgUrl,fileName):
        urllib.urlretrieve(imgUrl,fileName)
        
    # 批量下载图片,默认保存到当前目录下
    def batchDownloadJPGs(imgUrls,path = './'):
        # 用于给图片命名
        count = 1
        for url in imgUrls:
            downloadJPG(url,''.join([path,'{0}.jpg'.format(count)]))
            count = count + 1

    # 封装:从百度贴吧网页下载图片
    def download(url):
        html = getHtmlContent(url)
        jpgs = getJPGs(html)
        batchDownloadJPGs(jpgs)
        
    def main():
        url = 'http://tieba.baidu.com/p/2256306796'
        download(url)
        
    if __name__ == '__main__':
        main()

     

     

    requests + re实现:

     

    #!/usr/bin/python
    # coding:utf-8
    # 实现一个简单的爬虫,爬取百度贴吧图片
    import requests
    import re

    # 根据url获取网页html内容
    def getHtmlContent(url):
        page = requests.get(url)
        return page.text

    # 从html中解析出所有jpg图片的url
    # 百度贴吧html中jpg图片的url格式为:<img ... src="XXX.jpg" width=...>
    def getJPGs(html):
        # 解析jpg图片url的正则
        jpgReg = re.compile(r'<img.+?src="(.+?\.jpg)" width')  # 注:这里最后加一个'width'是为了提高匹配精确度
        # 解析出jpg的url列表
        jpgs = re.findall(jpgReg,html)
        
        return jpgs

    # 用图片url下载图片并保存成制定文件名
    def downloadJPG(imgUrl,fileName):
        # 可自动关闭请求和响应的模块
        from contextlib import closing
        with closing(requests.get(imgUrl,stream = True)) as resp:
            with open(fileName,'wb') as f:
                for chunk in resp.iter_content(128):
                    f.write(chunk)
        
    # 批量下载图片,默认保存到当前目录下
    def batchDownloadJPGs(imgUrls,path = './'):
        # 用于给图片命名
        count = 1
        for url in imgUrls:
            downloadJPG(url,''.join([path,'{0}.jpg'.format(count)]))
            print '下载完成第{0}张图片'.format(count)
            count = count + 1

    # 封装:从百度贴吧网页下载图片
    def download(url):
        html = getHtmlContent(url)
        jpgs = getJPGs(html)
        batchDownloadJPGs(jpgs)
        
    def main():
        url = 'http://tieba.baidu.com/p/2256306796'
        download(url)
        
    if __name__ == '__main__':
        main()

     

    两种方法输出都一样:

    展开全文
  • 基于Python编程实现简单网络爬虫实现

    万次阅读 多人点赞 2019-01-06 14:04:54
    编写一个非常轻量的python代码,实现网络爬虫


    引言

    网络爬虫(英语:web crawler),也叫网络蜘蛛(spider),是一种用来自动浏览万维网的网络机器人。其目的一般为编纂网络索引。 --维基百科

    网络爬虫可以将自己所访问的页面保存下来,以便搜索引擎事后生成索引供用户搜索。
    一般有两个步骤:1.获取网页内容  2.对获得的网页内容进行处理

     

    准备

    Linux开发环境

    python3.61安装方法:https://www.cnblogs.com/kimyeee/p/7250560.html

    安装一些必要的第三方库
    其中requiests可以用来爬取网页内容,beautifulsoup4用来将爬取的网页内容分析处理

    pip3 install requiests
    pip3 install beautifulsoup4

     


    第一步:爬取

    使用request库中的get方法,请求url的网页内容
    更多了解:http://docs.python-requests.org/en/master/

     

    编写代码
     

    [root@localhost demo]# touch demo.py
    [root@localhost demo]# vim demo.py
    #web爬虫学习 -- 分析
    #获取页面信息
    
    #输入:url
    #处理:request库函数获取页面信息,并将网页内容转换成为人能看懂的编码格式
    #输出:爬取到的内容
    
    import requests
    
    def getHTMLText(url):
        try:
            r = requests.get( url, timeout=30 )
            r.raise_for_status()    #如果状态码不是200,产生异常
            r.encoding = 'utf-8'    #字符编码格式改成 utf-8
            return r.text
        except:
            #异常处理
            return " error "
    
    url = "http://www.baidu.com"
    print( getHTMLText(url) )
    [root@localhost demo]# python3 demo.py

     

     

     

     

    第二步:分析

    使用bs4库中BeautifulSoup类,生成一个对象。find()和find_all()方法可以遍历这个html文件,提取指定信息。
    更多了解:https://www.crummy.com/software/BeautifulSoup/


    编写代码

    [root@localhost demo]# touch demo1.py
    [root@localhost demo]# vim demo1.py
    #web爬虫学习 -- 分析
    #获取页面信息
    
    #输入:url
    #处理:request库获取页面信息,并从爬取到的内容中提取关键信息
    #输出:打印输出提取到的关键信息
    
    import requests
    from bs4 import BeautifulSoup
    import re
    
    def getHTMLText(url):
        try:
            r = requests.get( url, timeout=30 )
            r.raise_for_status()    #如果状态码不是200,产生异常
            r.encoding = 'utf-8'    #字符编码格式改成 utf-8
            return r.text
        except:
            #异常处理
            return " error "
    
    def findHTMLText(text):
        soup = BeautifulSoup( text, "html.parser" )    #返回BeautifulSoup对象
        return soup.find_all(string=re.compile( '百度' )) #结合正则表达式,实现字符串片段匹配
    
    url = "http://www.baidu.com"
    text = getHTMLText(url)        #获取html文本内容
    res = findHTMLText(text)    #匹配结果
    
    print(res)        #打印输出
    [root@localhost demo]# python3 demo1.py

     

     

     

    一个例子:中国大学排名爬虫

    参考链接:https://python123.io/index/notebooks/python_programming_basic_v2

    #e23.1CrawUnivRanking.py
    import requests
    from bs4 import BeautifulSoup
    allUniv = []
    def getHTMLText(url):
        try:
            r = requests.get(url, timeout=30)
            r.raise_for_status()
            r.encoding = 'utf-8'
            return r.text
        except:
            return ""
    def fillUnivList(soup):
        data = soup.find_all('tr')
        for tr in data:
            ltd = tr.find_all('td')
            if len(ltd)==0:
                continue
            singleUniv = []
            for td in ltd:
                singleUniv.append(td.string)
            allUniv.append(singleUniv)
    def printUnivList(num):
        print("{:^4}{:^10}{:^5}{:^8}{:^10}".format("排名","学校名称","省市","总分","培养规模"))
        for i in range(num):
            u=allUniv[i]
            print("{:^4}{:^10}{:^5}{:^8}{:^10}".format(u[0],u[1],u[2],u[3],u[6]))
    def main():
        url = 'http://www.zuihaodaxue.cn/zuihaodaxuepaiming2016.html'
        html = getHTMLText(url)
        soup = BeautifulSoup(html, "html.parser")
        fillUnivList(soup)
        printUnivList(10)
    main()

    展示

     

     

    展开全文
  • python如何实现爬虫技术

    千次阅读 2018-11-22 11:55:29
    Python 爬虫架构主要由五个部分组成,分别是调度器、URL管理器、网页下载器、网页解析器、应用程序(爬取的有价值数据)。 调度器:相当于一台电脑的CPU,主要负责调度URL管理器、下载器、解析器之间的协调工作。 ...

    一、什么是爬虫

    爬虫:一段自动抓取互联网信息的程序,从互联网上抓取对于我们有价值的信息。

    二、Python爬虫架构

    Python 爬虫架构主要由五个部分组成,分别是调度器、URL管理器、网页下载器、网页解析器、应用程序(爬取的有价值数据)。

    • 调度器:相当于一台电脑的CPU,主要负责调度URL管理器、下载器、解析器之间的协调工作。
    • URL管理器:包括待爬取的URL地址和已爬取的URL地址,防止重复抓取URL和循环抓取URL,实现URL管理器主要用三种方式,通过内存、数据库、缓存数据库来实现。
    • 网页下载器:通过传入一个URL地址来下载网页,将网页转换成一个字符串,网页下载器有urllib2(Python官方基础模块)包括需要登录、代理、和cookie,requests(第三方包)
    • 网页解析器:将一个网页字符串进行解析,可以按照我们的要求来提取出我们有用的信息,也可以根据DOM树的解析方式来解析。网页解析器有正则表达式(直观,将网页转成字符串通过模糊匹配的方式来提取有价值的信息,当文档比较复杂的时候,该方法提取数据的时候就会非常的困难)、html.parser(Python自带的)、beautifulsoup(第三方插件,可以使用Python自带的html.parser进行解析,也可以使用lxml进行解析,相对于其他几种来说要强大一些)、lxml(第三方插件,可以解析 xml 和 HTML),html.parser 和 beautifulsoup 以及 lxml 都是以 DOM 树的方式进行解析的。
    • 应用程序:就是从网页中提取的有用数据组成的一个应用。

    下面用一个图来解释一下调度器是如何协调工作的:

    三、urllib2 实现下载网页的三种方式

    #!/usr/bin/python
    # -*- coding: UTF-8 -*-
     
    import cookielib
    import urllib2
     
    url = "http://www.baidu.com"
    response1 = urllib2.urlopen(url)
    print "第一种方法"
    #获取状态码,200表示成功
    print response1.getcode()
    #获取网页内容的长度
    print len(response1.read())
     
    print "第二种方法"
    request = urllib2.Request(url)
    #模拟Mozilla浏览器进行爬虫
    request.add_header("user-agent","Mozilla/5.0")
    response2 = urllib2.urlopen(request)
    print response2.getcode()
    print len(response2.read())
     
    print "第三种方法"
    cookie = cookielib.CookieJar()
    #加入urllib2处理cookie的能力
    opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cookie))
    urllib2.install_opener(opener)
    response3 = urllib2.urlopen(url)
    print response3.getcode()
    print len(response3.read())
    print cookie

    四、第三方库 Beautiful Soup 的安装

    Beautiful Soup: Python 的第三方插件用来提取 xml 和 HTML 中的数据,官网地址 https://www.crummy.com/software/BeautifulSoup/

    1、安装 Beautiful Soup

    打开 cmd(命令提示符),进入到 Python(Python2.7版本)安装目录中的 scripts 下,输入 dir 查看是否有 pip.exe, 如果用就可以使用 Python 自带的 pip 命令进行安装,输入以下命令进行安装即可:

    pip install beautifulsoup4

    2、测试是否安装成功

    编写一个 Python 文件,输入:

    import bs4
    print bs4

    运行该文件,如果能够正常输出则安装成功。

    五、使用 Beautiful Soup 解析 html 文件

    #!/usr/bin/python
    # -*- coding: UTF-8 -*-
     
    import re
     
    from bs4 import BeautifulSoup
    html_doc = """
    <html><head><title>The Dormouse's story</title></head>
    <body>
    <p class="title"><b>The Dormouse's story</b></p>
    <p class="story">Once upon a time there were three little sisters; and their names were
    <a href="http://example.com/elsie" class="sister" id="link1">Elsie</a>,
    <a href="http://example.com/lacie" class="sister" id="link2">Lacie</a> and
    <a href="http://example.com/tillie" class="sister" id="link3">Tillie</a>;
    and they lived at the bottom of a well.</p>
    <p class="story">...</p>
    """
    #创建一个BeautifulSoup解析对象
    soup = BeautifulSoup(html_doc,"html.parser",from_encoding="utf-8")
    #获取所有的链接
    links = soup.find_all('a')
    print "所有的链接"
    for link in links:
        print link.name,link['href'],link.get_text()
     
    print "获取特定的URL地址"
    link_node = soup.find('a',href="http://example.com/elsie")
    print link_node.name,link_node['href'],link_node['class'],link_node.get_text()
     
    print "正则表达式匹配"
    link_node = soup.find('a',href=re.compile(r"ti"))
    print link_node.name,link_node['href'],link_node['class'],link_node.get_text()
     
    print "获取P段落的文字"
    p_node = soup.find('p',class_='story')
    print p_node.name,p_node['class'],p_node.get_text()

     

    展开全文
  • 前言—功能:这个可以...这个微博爬虫是基于一个比较古老的微博版本的,那个时候的微博还可以直接爬网页来获取用户的微博内容,网址是:https://weibo.cn 二、准备阶段: 首先进行爬取的时候是需要带入 cook...

    前言—功能:这个可以用来爬取微博信息,自定义时间间隔,来爬取用户的微博动态,最后调用短信接口,来提醒用户被监控用户发微博了(因为微博里面有特别关注这个功能,所以这个实战,也仅仅只是兴趣了)

    一、简介:

    1. 这个微博爬虫是基于一个比较古老的微博版本的,那个时候的微博还可以直接爬网页来获取用户的微博内容,网址是:https://weibo.cn

    二、准备阶段:

    1. 首先进行爬取的时候是需要带入 cookie 的所以应该先登录自己的账户来获取 cookie ,登录网址为:https://passport.weibo.cn/signin/login 【注】微博账号可以申请一个小号,因为如果被发现的话,微博是只封账号,不封 IP 的,所以注册个小号是比较保险的
    2. 获取 cookie :按 F12 打开控制台,输入 document.cookie 这时,控制台就会打出此时的 cookie
    3. 获取目标用户的 UID :只需要搜索目标用户的用户名即可,然后选择需要监控的页面,将此时的浏览器地址栏里面的地址复制一下即可,里面已经带有了 UID

    三、模拟请求 header

    header = {'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.22 Safari/537.36 SE 2.X MetaSr 1.0'
              ,'Cookie':'此处填入一开始从浏览器获得的cookie'}
    

    以上则是一个被改造了的 header 模拟了一个User-Agent 来防止发现是机器人在获取网页,cookie 是带入个人信息,跳过登录

    四、

    1. 决定好要爬取几个人的信息:

      这里我决定的是爬取两个人的信息,所以我定义了两个数组。

      latested_msg=["",""]#记录每个人最新的时间
      latested_content=["",""]#记录每个最新微博,防止时间改变,重复发短信
      
    2. 创建本地文件:
      首先我的思路是这个样子的,因为我的电脑不可能一直都处于开机状态,所以每次我启动这个程序,用来存历史信息的数组在初始化的时候都会初始化为空,然后微博上爬下来的内容相对于空来说是种更新状态,而不论是不是真的更新了,所以我就创建了一个本地文件,每当用户更新的时候,重写一下文件,每当我重启程序的时候,都会读取这个本地文件来初始化历史信息数组,这样就可以防止短信浪费,毕竟短信也是需要花钱的。

      #这个本地文件需要注意格式,请读者注意一下,体会一下代码是如何写入的
              if not os.path.exists(dir_path):  # 创建文件夹
                  os.mkdir(dir_path)
              path = dir_path + TXT_path
              with open(path, "w") as f:  # 写入更新数据,重写每一个user
                  for i in range(0,len(latested_msg)):
                      f.write(user[i]+"\n")#写入用户
                      f.write(latested_msg[i]+"\n")#写入最新的微博时间
                      f.write(latested_content[i]+"\n")#写入最新的微博内容
      

    五、处理短信接口
    这里的短信接口我使用的是榛子云科技所提供的短信接口,这个个人用户只能使用应用名称为【测试】的应用,不过不影响使用,像其他的如:阿里、腾讯等等,如果发送自定义短信内容的,都需要认证,这就很烦,还好找到了这个,不过这个得花钱,初始免费短信只有1条,后来我又充值了10块共270条短信,网址:http://sms_developer.zhenzikj.com/zhenzisms_user/login.html

    六、遇到的问题

    1. 也许微博为了防止爬虫啥的,爬取下来的网页代码,并不能用 Beautiful Soup 来解析,因为他在中间插入了好多</html>标签,这就引起了解析错误
    2. 解决办法:观察微博网页结构,采用 split() 函数将每个微博分割开来,最后单独处理所获得的第 0 个元素

    七、完整代码 + 解释

    import bs4
    from bs4 import BeautifulSoup
    import time
    from requests import Session
    import os
    
    """发送实体类"""
    import urllib.request
    import urllib.parse
    import ssl
    
    
    class ZhenziSmsClient(object):
        def __init__(self, apiUrl, appId, appSecret):
            self.apiUrl = apiUrl
            self.appId = appId
            self.appSecret = appSecret
    
        def send(self, number, message, messageId=''):
            data = {
                'appId': self.appId,
                'appSecret': self.appSecret,
                'message': message,
                'number': number,
                'messageId': messageId
            }
    
            data = urllib.parse.urlencode(data).encode('utf-8')
            ssl._create_default_https_context = ssl._create_unverified_context
            req = urllib.request.Request(self.apiUrl + '/sms/send.do', data=data)
            res_data = urllib.request.urlopen(req)
            res = res_data.read()
            res = res.decode('utf-8')
            return res
    
        def balance(self):
            data = {
                'appId': self.appId,
                'appSecret': self.appSecret
            }
            data = urllib.parse.urlencode(data).encode('utf-8')
            ssl._create_default_https_context = ssl._create_unverified_context
            req = urllib.request.Request(self.apiUrl + '/account/balance.do', data=data)
            res_data = urllib.request.urlopen(req)
            res = res_data.read()
            return res
    
        def findSmsByMessageId(self, messageId):
            data = {
                'appId': self.appId,
                'appSecret': self.appSecret,
                'messageId': messageId
            }
            data = urllib.parse.urlencode(data).encode('utf-8')
            ssl._create_default_https_context = ssl._create_unverified_context
            req = urllib.request.Request(self.apiUrl + '/smslog/findSmsByMessageId.do', data=data)
            res_data = urllib.request.urlopen(req)
            res = res_data.read()
            return res
    """结束"""
    
    isBreakDown=False
    name=""
    latested_msg=["",""]#记录每个人最新的时间
    latested_content=["",""]#记录每个最新微博,防止时间改变,重复发短信
    header = {'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.22 Safari/537.36 SE 2.X MetaSr 1.0'
              ,'Cookie':'填入所获取到的Cookie'}
              
    def getHtml(url,op,user):
        global isBreakDown
        code=None
        try:
            s=Session()
            r=s.get(url,headers=header)
            code=r.status_code
            r.raise_for_status()
            r.encoding="UTF-8"
            """联网成功"""
            if isBreakDown:
                print("<>网络连接成功,继续监控...")
            isBreakDown=False
            """"""
            name1=BeautifulSoup(r.text,"html.parser").find("div",class_="ut")
            if isinstance(name1,bs4.element.Tag):
                global name
                if name!=name1.text.split("/")[0].replace(" ","_"):
                    name=name1.text.split("/")[0].replace(" ","_")
                print(name) #打印用户名
            Items=r.text.split('<div class="s"></div>')[0:len(r.text.split('<div class="s"></div>'))-1]
    
            isFirst = True
            for index in range(0,len(Items)):
                item=Items[index]
                if(index==0):
                    items=Items[index].split("<div class=\"c\" id=")
                    item="<div class=\"c\" id="+items[1]
                item=BeautifulSoup(item,"html.parser")
                span=item.find("span",class_="ct")
                if isinstance(span,bs4.element.Tag):
                    if "今天" in span.text or "分钟前" in span.text or "刚刚" in span.text:
                        if isFirst:#存储第一条微博时间及内容
                            global latested_msg
                            global latested_content
                            itemText=str(item.text.replace("  ","_").replace(" ","_").split("赞")[0].encode("utf-8"))#获取真实文本内容,防止表情出现,转换编码
                            text=span.text.replace(" ","_").replace(" ","_")#span的text
                            if latested_msg[op]!=text and latested_content[op]!=itemText:
                                print("微博更新,内容为:{}".format(item.text))
                                #同时赋值域#
                                latested_msg[op]=text
                                latested_content[op]=itemText
                                changeLog(user)
                                ###########
                                send(name,latested_msg[op])
                        isFirst=False
                if index <5:
                    print("最新第{}条微博,内容是:{}".format(index+1,item.text))
            print()
        except:
            isBreakDown=True
            """联网尝试"""
            if isBreakDown:
                print("<>网络连接中断,尝试重新连接中...\n--错误代码【{}】".format(code))
            """"""
    
    def send(name,time):
        print("开始发送")
        # try:
        #     """短信接口采用-榛子科技-提供的接口(http://smsow.zhenzikj.com/),妈的还冲了10块钱,共270条短信,如需技术操作说明,详情见其官网开发文档"""
        #     client = ZhenziSmsClient("https://sms_developer.zhenzikj.com","AppId", "AppSecret")
        #     result = client.send('发送的电话号码', '注意!用户:{},微博已更新,时间:{},详情微博查看'.format(name,time))
        #     # print(result)
        #     # print(client.balance())
        # except:
        #     print("<>发送短信异常")
    
    def init():
        """预处理,读取本地Log.txt 可以节省一条短信"""
        dir_path=r'D:\Wei_Bo_Jian_Kong'
        TXT_path=r'\log.txt'
        who=-1
        try:
            global latested_msg
            global latested_content
            if not os.path.exists(dir_path):#创建Log文件夹
                os.mkdir(dir_path)
            path=dir_path+TXT_path
            with open(path,"r") as f:#读取信息
                EachUser=f.read().split("\n")
                for ans in range(0,len(EachUser)):
                    if "https://" in EachUser[ans]:
                        who+=1
                        last_time=ans+1
                        last_msg=ans+2
                        latested_msg[who]=EachUser[last_time]
                        latested_content[who]=EachUser[last_msg]
        except:
            print("init failed")
    
    def changeLog(user):
        """如果检测到微博更新了,则更新本地Log.txt"""
        dir_path = r'D:\Wei_Bo_Jian_Kong'
        TXT_path = r'\log.txt'
        global latested_msg
        global latested_content
        try:
            if not os.path.exists(dir_path):  # 创建文件夹
                os.mkdir(dir_path)
            path = dir_path + TXT_path
            with open(path, "w") as f:  # 写入更新数据,重写每一个user
                for i in range(0,len(latested_msg)):
                    f.write(user[i]+"\n")
                    f.write(latested_msg[i]+"\n")
                    f.write(latested_content[i]+"\n")
        except:
            print("change failed")
    
    if __name__ == '__main__':
        user=["用户1的页面","用户2的页面"]
        print("<>开机启动,等待网络连接...")
        init()#先进行初始化操作
        #time.sleep(30)#30秒足够了
        print("--开始监控--")
        while(True):
            for index in range(0,len(user)):
                getHtml(user[index],index,user)
                if isBreakDown:
                    time.sleep(10)#如果断网了,则沉睡3秒后,重新申请
                else:
                    time.sleep(3)# 60 * 5 每5分钟轮询一个人,一轮下来 需要 10 分钟
    
    
    展开全文
  • Python实现简单爬虫

    千次阅读 2016-05-18 23:20:46
    Python实现简单爬虫本博客为本人学习Python过程中的总结,如有类同,纯属巧合。 简介爬虫是一段自动抓取互联网信息的程序。它的价值是互联网数据为我所有。利用爬取到的数据,可以做很多的事情如:可以进行数据统计...
  • Python实现简单爬虫架构的运行流程如下:
  • Python实现网络爬虫

    千次阅读 2012-01-18 00:55:04
    本人刚学Python不久,前段时间看到华南师范大学有一个网络爬虫的项目,特意研究了一下,用Python写了一个可以多线程下载的网络爬虫。 其实网络爬虫的原理并不是太复杂,具体的一些东西可以参照百度百科的描述,...
  • python实现简单爬虫抓取图片

    千次阅读 2016-03-15 09:10:01
    最近学习python,正如大家所知,python在网络爬虫方面有着广泛的应用,下面是一个利用python程序抓取网络图片的简单程序,可以批量下载一个网站更新的图片,其中使用了代理IP的技术。import urllib.request import ...
  • python实现scrapy爬虫每天定时抓取数据

    万次阅读 多人点赞 2017-09-02 23:18:25
    python实现scrapy爬虫每天定时抓取数据1. 前言。1.1. 需求背景。 每天抓取的是同一份商品的数据,用来做趋势分析。 要求每天都需要抓一份,也仅限抓取一份数据。 但是整个爬取数据的过程时间上并不确定,受本地...
  • import string from urllib import request from urllib.parse import quote class HtmlDownloader(object): def download(self, url): if url is None: return None ... url_ = quote(url, safe=string.printable...
  • 利用python实现爬虫

    千次阅读 2018-08-14 09:45:29
    准备一个安装好python2.7以上的环境。 编译软件准备PyCharm 注:以上环境是必备的。 我们就以爬取糗事百科的文字段子和用户名称为例: 得到目标官网的地址:https://www.qiushibaike.com/8hr/page/1/ 由他们网站...
  • Python爬虫教程-05-python爬虫实现百度翻译

    万次阅读 多人点赞 2018-08-11 20:48:39
    使用python爬虫实现百度翻译功能 python爬虫实现百度翻译: python解释器【模拟浏览器】,发送【post请求】,传入待【翻译的内容】作为参数,获取【百度翻译的结果】 通过开发者工具,获取发送请求的地址 提示: ...
  • Python实现简单爬虫功能

    千次阅读 2017-05-06 14:08:32
    我们日常上网浏览网页的时候,经常会看到一些好看的图片,我们就希望把这些图片保存下载,或者用户用来做桌面壁纸,或者用来做设计的素材。
  • python实现80s爬虫+xunsearch使用

    千次阅读 2017-12-11 21:40:10
    背景:最近学习python,正好看到GitHub上有一个开源项目,一个百度云资源爬虫,感觉挺有意思就打算模仿一下,但是发现,好像现在百度云资源已经很难爬取了,于是就打算自己爬一个电影资源网站。项目大体框架: 爬虫...
  • 第一步、 首先安装Python3环境 根据自己电脑系统,...这块就不介绍如何安装了,很简单。 第二步、pip安装Jupyter Notebook 这块主要是python3 ide 这里两个版本安装上jupyternotebook python -m pip install...
  • Python scrapy 实现网页爬虫

    千次阅读 2016-05-17 21:50:46
    Python scrapy 安装和简单网络爬虫的代码实现
  • python实现简单爬虫功能代码

    千次阅读 2016-04-27 15:51:02
    实现爬取指定网页,下载图片到本地 原博地址:http://www.cnblogs.com/fnng/p/3576154.html 1.打开网页,读取,最后输出 #coding=utf-8 import urllib def getHtml(url): page = urllib.urlopen(url) ...
  • Python实现微博爬虫,爬取新浪微博

    千次阅读 2020-12-14 04:05:57
    def get_one_page(keyword,page): one_... 评论的id 评论的详情 详情的url就是文章详情链接加上评论的id https://m.weibo.cn/detail/4539964169139251?cid=4540355267798522 但是可以直接调用api实现,cid就是文章的id
  • python实现爬虫下载美女图片

    千次阅读 2015-07-15 08:10:50
    python实现爬虫下载美女图片 本次爬取的贴吧是百度的美女吧,给广大男同胞们一些激励 爬取之前需要浏览器先登录百度贴吧的帐号,各位也可以代码中使用post提交或者加入cookie 爬行地址:...
  • Python的简单爬虫原理及实现

    千次阅读 2016-03-02 21:33:41
    基于Python爬虫的简单介绍及实现,主要介绍基础知识和爬虫的结构和逻辑方法
  • python3实现简单爬虫功能

    千次阅读 2016-07-18 14:46:48
    本文参考虫师python2实现简单爬虫功能 简单获取页面数据,从中获取图片信息,下载到本地 利用正则从页面数据从抓取编码格式,然后以该编码格式解码字符串
  • Python之分布式爬虫实现步骤

    千次阅读 2018-08-29 18:48:18
    默认情况下,scrapy爬虫是单机爬虫,只能一台电脑上运行,因为爬虫调度器当中的队列queue去重和set集合都是本机上创建的,其他电脑无法访问另一台电脑上的内存中的内容。分布式爬虫是一个用共同的爬虫程序,同时...
  • Python如何实现分布式爬虫

    万次阅读 2018-08-13 23:09:36
    经过前面的介绍,相信大家已经对Python爬虫有了初步的了解,对一些常见的网站爬虫,应该也能够轻松实现。不难发现,我们使用单一爬虫进行爬取数据时有明显缺陷——速度慢,当我们需要进行大规模数据采集时,这种...
  • 也希望给那些学习Python很久却没有思路,不知道如何实现一个爬虫的同学带带节奏,本节课会通过最简单的方式,实现抓取远程网页,并且获取所有图片地址的程序。 如果一直看我文章的朋友可能会知道,我第一讲中立下...
  • python2.7 简易爬虫实现1

    万次阅读 2016-11-03 17:05:21
    url = '...walk_all(url) 首先下载request库 pip install request 然后新建一个python文件引入requestimport request 写入如下代码def walk_all(url): html = requests.get(url) print html.text 可
  • import urllib.request class HtmlDownloader(object): def download(self, url): if url is None: return response = urllib.request.urlopen(url) if response.getcode() !... return response.read()

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 91,897
精华内容 36,758
关键字:

在python里怎么实现爬虫

python 订阅
爬虫 订阅