精华内容
下载资源
问答
  • 这篇文章主要介绍了Python如何使用BeautifulSoup爬取网页信息,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 简单爬取网页信息的思路一般是 1、查看网页源码 2...
  • 本篇文章主要讲解如何使用webmagic技术来实现网页爬取, 以及使用selenium操作页面元素,实现点击、输入事件 所用技术 1.webmagic 添加需要爬取的url Spider.create(new MyProcessor()).addUrl(...

    作者专注于Java、架构、Linux、小程序、爬虫、自动化等技术。 工作期间含泪整理出一些资料,微信搜索【程序员高手之路】,回复 【java】【黑客】【爬虫】【小程序】【面试】等关键字免费获取资料。技术交流、项目合作可私聊。 

    目录

    前言

    所用技术

    1.webmagic

    2.selenium


    前言

    网上的爬虫、自动化一般都是使用python来做的;

    身为java程序员,当然要不甘示弱!

    所以就写了java爬虫、自动化系列文章,供众多java程序员参考!

    首先看一下自动化操作百度首页的图像,模拟输入、点击事件(源码地址:做自动化必备工作以及hello world代码):

    所用技术

    1.webmagic

    添加需要爬取的url

    Spider.create(new MyProcessor()).addUrl("https://www.cnblogs.com/").thread(5).run();

    在process里面抓取符合条件的内容 

     public void process(Page page) {
            //判断链接是否符合http://www.cnblogs.com/任意个数字字母-/p/7个数字.html格式
            if(!page.getUrl().regex("http://www.cnblogs.com/[a-z 0-9 -]+/p/[0-9]{7}.html").match()){
               //加入满足条件的链接
                page.addTargetRequests(
                        page.getHtml().xpath("//*[@id=\"post_list\"]/div/div[@class='post_item_body']/h3/a/@href").all());
    
            }else{
                *[@id="post_list"]/div[5]/div[2]/h3/a
                //获取页面需要的内容
                System.out.println("抓取的内容:"+
                        page.getHtml().xpath("//*[@id=\"Header1_HeaderTitle\"]/text()").get()
                );
                count ++;
            }
        }

    2.selenium

    以今日头条为例对页面元素(“关注”按钮)进行点击

    设置驱动

    System.setProperty("webdriver.chrome.driver", "CHROMEPATH/chromedriver.exe");
            

    初始化driver

    WebDriver driver = new ChromeDriver();

    进入页面

    driver.get("https://www.toutiao.com/c/user/relation/4492956276/?tab=followed#mid=4492956276");

     获取所需元素

    WebElement submit = li.findElement(By.cssSelector(".submit"));

     点击

    submit.click();

    作者专注于Java、架构、Linux、小程序、爬虫、自动化等技术。 工作期间含泪整理出一些资料,微信搜索【程序员高手之路】,回复 【java】【黑客】【爬虫】【小程序】【面试】等关键字免费获取资料。技术交流、项目合作可私聊。

    展开全文
  • 使用pycharm进行爬取网页所需数据库:建立头文件获取网站的URL将URL携带的参数封装到字典中对URL进行requests请求永久化保存完整代码如下: 所需数据库: requests 这也是爬虫最常用的数据库。 调用方式:import ...

    所需数据库:

    requests 这也是爬虫最常用的数据库。
    调用方式:import requests
    开始时,可能并没有这个数据库,需要下载安装,
    在电脑的cmd中输入pip install requests
    等待安装后即可

    建立头文件

    目的为了绕过网站的反爬虫机制,进行UA伪装。
    建立方式headers = { 'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.163 Safari/537.36' }
    其中Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.163 Safari/537.36为你浏览器上的头文件,可以在浏览器上打开开发者工具,快捷键ctrl +shift + i,在上面进行查看headers

    获取网站的URL

    在此处我用的是搜狐网站url = 'https://www.sogou.com/web',当然你也可以自己定义别的,比如百度

    将URL携带的参数封装到字典中

    #处理url携带的参数:封装到字典中
        kw = input('enter a word:')
        param = {
            'query':kw
            }
            #对指定的URL发起的请求对应的URL是携带参数的,并且请求过程中处理了参数
    

    对URL进行requests请求

    response = requests.get(url=url,params=param,headers=headers)
    #requests调用格式
        page_text = response.text
    

    永久化保存

    #with open()#用with open(),便可以永久保存。
    fileName = kw+'.html'
        with open(fileName,'w',encoding='utf-8') as fp:
           fp.write(page_text)#进行写入
    

    完整代码如下:

    import requests
    if __name__ == "__main__":
        #伪装字典
        headers = {
            'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.163 Safari/537.36'
            }
        url = 'https://www.sogou.com/web'
        #处理url携带的参数:封装到字典中
        kw = input('enter a word:')
        param = {
            'query':kw
            }
            #对指定的URL发起的请求对应的URL是携带参数的,并且请求过程中处理了参数
        response = requests.get(url=url,params=param,headers=headers)
        page_text = response.text
        fileName = kw+'.html'
        with open(fileName,'w',encoding='utf-8') as fp:
           fp.write(page_text)
           print(fileName,'保存成功!!')
    

    这是对于小白的练手入门环节,大佬勿喷!
    谢谢,如有什么问题欢迎留言!!

    展开全文
  • python爬取网页信息

    千次阅读 2015-11-09 22:30:36
    最近在学习python,发现通过python爬取网页信息确实方便,以前用C++写了个简单的爬虫,爬取指定网页的信息,代码随便一写都几百行,而要用python完成相同的工作,代码量相当少。前几天看到了一个博客上讲解如何使用...

    最近在学习python,发现通过python爬取网页信息确实方便,以前用C++写了个简单的爬虫,爬取指定网页的信息,代码随便一写都几百行,而要用python完成相同的工作,代码量相当少。前几天看到了一个博客上讲解如何使用python写的爬虫爬取成绩信息,看了之后,自己实战了一番,并且达到了相同的效果。

    整个过程和那篇博客所写的过程相同,不过由于我们学校的成绩查询系统要输入验证码,所以步骤稍微繁琐一点。

    1.了解查询过程

    使用的工具当然也是HttpFox插件。开启HttpFox插件后,我登录了成绩系统并且查询了成绩。然后发现httpFox检测到了很多条信息:

     

    可以看到,当我们第一次访问成绩管理系统的时候,浏览器向服务器发送了一个GET请求,而服务器返回的消息头部中给定了Cookie值,如下图:

     

    接下来,浏览器向http://gsinfo.whu.edu.cn/servlet/GenImg发送信息,获取验证码信息,可以发现发送消息的头部加载COOKIE信息:

     

    然后,我输入用户名、密码、验证码登录系统,发现向http://gsinfo.whu.edu.cn/servlet/Login_use这个网址发送了POST信息,然后检查发送的POST数据,可以看到用户名,密码,验证码,这些信息都发送过去了。

     

    这里可以看到,who变量表示的是用户的类别(学生还是老师),id,pwd,yzm分别表示的是学号,密码和验证码,而后面的submit.xsubmit.y则不用管它。

    登录之后,点击了“查询成绩”的按钮之后,才最终显示了成绩的页面,如下图:

     

     

    运用HttpFox监测之后,我们大致了解了查询成绩的基本流程:

    首先,我们访问http://gsinfo.whu.edu.cn,浏览器得到Cookie,然后获取到相应Cookie对应的验证码,得到验证码图片的网址是http://gsinfo.whu.edu.cn/servlet/GenImg

    其次,我们输入了学号,密码,验证码后,POSThttp://gsinfo.whu.edu.cn/servlet/Login_use,如果登录成功,则进入到了成绩查询系统。

    最后,我们要向http://gsinfo.whu.edu.cn/score/Svlt_QueryScore这个网址POST查询信息,得到最终的查询页面。

     2.用python实现模拟登录

    知道了成绩查询的大体流程之后,我们就可以使用python来模拟学生登录系统并且查询成绩。整个查询过程中最重要的一点是要得到登录时的Cookie值,并且后面访问时也要传入这个Cookie值,否则会出现登录失败的情况。我就在验证码这里遇到了点困难,明明输入的验证码就是看到的验证码,但是还是登录失败。最终发现,原来是Cookie的值发生了变化,导致登录时所需要的验证码已经不是你得到的验证码了。

    这里给出了我写的python代码,用户需要输入学号,密码,和所看到的验证码,然后就能看到自己的成绩了。

    # -*- coding: utf-8 -*-
    #模拟登陆武汉大学研究生管理系统
    import urllib2,cookielib
    import urllib,string
    import cStringIO,Image,re
    cookie = cookielib.CookieJar()
    opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cookie))
    opener.addheaders.append(('User-Agent','Mozilla/5.0 (Windows NT 5.1; rv:25.0) Gecko/20100101 Firefox/25.0'))
    #opener.addheaders.append(('Connection','Keep-Alive'))
    #获取验证码
    
    opener.open(urllib2.Request('http://gsinfo.whu.edu.cn'))
    
    imgurl = 'http://gsinfo.whu.edu.cn/servlet/GenImg'
    userid = raw_input("学号:")
    pwd = raw_input("密码:")
    res = opener.open(urllib2.Request(imgurl))
    tempIm = cStringIO.StringIO(res.read())
    im = Image.open(tempIm)
    im.show()
    yzm = raw_input("验证码:")
    #需要post的数据
    postdata = urllib.urlencode({
        'who':'student',
        'id':userid,
        'pwd':pwd,
        'yzm':yzm,
        'submit.x':'52',
        'submit.y':'13'
        })
    req = urllib2.Request(
        url = 'http://gsinfo.whu.edu.cn/servlet/Login_use',
        data = postdata
        )
    opener.open(req)
    #已经成功进入系统
    #查询成绩
    postscore = urllib.urlencode({
        'queryType':'1',
        'sYear':'-1',
        'function':'queryScoreStu',
        'Submit':'%C8%B7+%B6%A8',
        'flag':'unnull'})
    req = urllib2.Request(
        url = 'http://gsinfo.whu.edu.cn/score/Svlt_QueryScore',
        data = postscore
        )
     
    result = opener.open(req)
    #返回打印内容
    info = result.read()
    
    #打印成绩
    pattern = r'<TD width="90" height="25" align="center" valign="middle">([^>]*?)</TD>[\s\S]*?height="25">([^>]*?)</TD>[\s\S]*?25[\s\S]*?25[\s\S]*?25[\s\S]*?25[\s\S]*?25[\s\S]*?25">[\s\S]*?25">([^>]*?)</TD>'
    p = re.compile(pattern)
    score = p.findall(info)
    for i in range(len(score)):
        print score[i][1],score[i][0],string.strip(score[i][2])
    

    代码的运行结果如下:



    总结:本文介绍了如何利用python编写一个小爬虫,爬取武汉大学研究生管理系统中学生的成绩。我目前算是初学python,发现python确实是一门强大的编程语言。毕竟这只是个小练习,还有些不完善,没有考虑异常的情况。

    参考文章:

    [Python]网络爬虫(十):一个爬虫的诞生全过程(以山东大学绩点运算为例)


    展开全文
  • 爬取网页所有信息  利用urllib2包来抓取网页的信息,先介绍下urllib2包的urlopen函数。  urlopen:将网页所有信息存到一个object里,我们可通过读取这个object来获得网页信息。例如,我们使用它来获取百度首页...

    由于个人安装的Python版本是2.7的,因此此后的相关代码也是该版本。

    • 爬取网页所有信息 
      利用urllib2包来抓取网页的信息,先介绍下urllib2包的urlopen函数。 
      urlopen:将网页所有信息存到一个object里,我们可通过读取这个object来获得网页信息。例如,我们使用它来获取百度首页信息如下。
    import urllib2
    f = urllib2.urlopen('http://www.baidu.com')
    f.read(100)
    • 1
    • 2
    • 3

    通过上面的代码我们读取了百度首页的前100个字符:

    '<!DOCTYPE html><!--STATUS OK--><html><head><meta http-equiv="content-type" content="text/html;charse'
    • 1

    有时可能会出现编码问题导致打开的是乱码,只需修改下编码格式即可:

    f.read(100).decode('utf-8')
    • 1

    通过这种方法我们可以获得链家一个二手房首页的信息:

    import urllib2
    url = 'http://sz.lianjia.com/ershoufang/pg'
    res = urllib2.urlopen(url)
    content = res.read().decode('utf-8')
    • 1
    • 2
    • 3
    • 4

    于是网页信息便存在了content之中。

    • 获取房源信息 
      上面我们已经获得了一整个的网页信息,接下来需要获取网页中我们需要的有用信息,我们的目标是获取房源信息,方法是利用正则表达式来获取。关于正则表达式的知识可以参考一个网友的博文http://www.cnblogs.com/huxi/archive/2010/07/04/1771073.html 
      首先,我们查看下网页信息: 
      这里写图片描述
      我们关注类似下面的这种信息
    data-el="region">万科第五园一期</a> | 3室2厅 | 104.58平米 | 南 | 精装</div><
    • 1
    import urllib2
    import re
    url = 'http://sz.lianjia.com/ershoufang/pg/'
    res = urllib2.urlopen(url)
    content=res.read().decode('utf-8')
    result = re.findall(r'>.{1,100}?</div></div><div class="flood">',content)
    for i in result:
        print(i[0:-31].decode('utf-8'))
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    运行结果如下图: 
    运行结果图 
    这样就算是获取了我想要的信息了,不过这个信息中间有个我们不想要的符号,接下来还需要去掉这个符号(可见这种方法比较繁琐,效率也偏低)。 
    在这里我通过字符替换操作,用空字符来替换这个多余字符。 
    代码为:

    import urllib2
    import re
    url = 'http://sz.lianjia.com/ershoufang/pg/'
    res = urllib2.urlopen(url)
    content=res.read().decode('utf-8')
    result = re.findall(r'>.{1,100}?</div></div><div                            class="flood">',content)
    for i in result:
        print(i[0:-31].replace('</a>','').decode('utf-8'))
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    这里写图片描述 
    上面的方法虽然帮我们获得了房源信息,但是方法还是有些繁琐,而且效率也并不高 
    我们利用上面的方法来爬取链家二手房100个页面房源信息,代码修改如下:

    import urllib2
    import time
    import re
    print(time.clock())
    url = 'http://sz.lianjia.com/ershoufang/pg'
    for x in range(101):
        finalUrl = url + str(x) + '/'
        res = urllib2.urlopen(finalUrl)
        content=res.read().decode('utf-8')
        result = re.findall(r'>.{1,100}?</div></div><div class="flood">',content)
        for i in result:
            print(i[0:-31].replace('</a>','').decode('utf-8'))
    print(time.clock())
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14

    主要是测试一下运行时间,测试结果大概是350s左右(当然,主要还受网速的影响,而对代码本身来说消耗的大多数时间都在urlopen上),接下来,在下一篇中,将利用BeautifulSoup库来实现房源的获取。

    展开全文
  • 如何爬取动态网页信息

    万次阅读 多人点赞 2018-06-21 00:18:35
    网页分为静态和动态两种网页。... for i in range(0,5):#进行循环爬取下一页地址的股票信息 html=get_page(url) url=get_data(html,url) 因为是刚学不久,所以很多地方写得不好,比较繁琐冗长,还请大神赐教 
  • 一、如何爬取链家网页房源信息

    万次阅读 2016-08-02 16:45:30
    爬取网页所有信息 利用urllib2包来抓取网页的信息,先介绍下urllib2包的urlopen函数。 urlopen:将网页所有信息存到一个object里,我们可通过读取这个object来获得网页信息。例如,我们使用它来获取百度首页信息...
  • 一、引言在实际工作中,难免会遇到从网页爬取数据信息的需求,如:从微软官网上爬取最新发布的系统版本。很明显这是个网页爬虫的工作,所谓网页爬虫,就是需要模拟浏览器,向网络服务器发送请求以便将网络资源从网络...
  • Python爬虫:Xpath爬取网页信息(附代码) 上一次分享了使用Python简单爬取网页信息的方法。但是仅仅对于单一网页的信息爬取一般无法满足我们的数据需求。对于一般的数据需求,我们通常需要从一个网页跳转到另外一个...
  • 在帮老师爬取好专家网页时, ...第二网页源代码中没有网页信息如何爬取,网页中的专家姓名等信息在网页源代码中压根找不到 附上网址http://hzj.tech110.net/expert/expsearch.jspx?expcode=1&flag=2# 谢谢啦
  • 如何用爬虫的scrapy框架轻松的爬取想要的网页信息并清洗,看完下面的方法,你也可以!废话不多说,跟着小编一起来。 1.创建一个scrapy工程 打开pycharm,点击左下角的Terminal,就会自动锁定在当前的路径。 输入...
  • ![]...[图片说明](https://img-ask.csdn.net/upload/201905/14/1557793876_298823.png)如图,我要爬取的是两个日期,然后存入csv文件中。如何把这两个日期转成一行输出。
  • 如何用 Python 爬取网页制作电子书

    千次阅读 2018-01-23 00:00:00
    本文来自作者 孙亖 在 GitChat 上分享 「如何用 Python 爬取网页制作电子书」,「阅读原文」查看交流实录。「文末高能」编辑 | 哈比0 前言有人爬取数据分析黄金周旅游景点,有人爬取数据分析相亲,有人大数据...
  • 如何轻松爬取网页数据?

    千次阅读 2017-06-14 10:37:00
    在实际工作中,难免会遇到从网页爬取数据信息的需求,如:从微软官网上爬取最新发布的系统版本。很明显这是个网页爬虫的工作,所谓网页爬虫,就是需要模拟浏览器,向网络服务器发送请求以便将网络资源从网络流中读取...
  • python如何爬取动态网页数据

    千次阅读 2018-06-16 12:43:52
      说到爬网页,我们一般的操作是先查看源代码或者审查元素,找到信息所在节点,然后用 beautifulsoup/xpth/re 来获取数据,这是我们对付静态网页的常用手段。   但大家也知道,现在的网页大多都是动态的了,即...
  • 不同于前面说到的下载整个网页的形式,requests 模块可以添加请求头、参数信息对具体的网页接口发起请求,是一种局部形式的爬虫技术。 requests 模块通过向服务器发送 http 请求获取数据,同时支持 get、post 的协议...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 515
精华内容 206
关键字:

如何爬取网页信息