zoukankan      html  css  js  c++  java
  • 正则与xpath爬虫模板

    题记

        研究python上瘾啊,今天搞个正则与xpath爬取数据的模板。

    正文

        直接上代码,很简单,自己看吧,xpath有些小坑,有的东西他爬不到。

    #coding=utf-8
    import requests
    from lxml import etree
    import urllib3
    import re
    #re正则匹配模型
    def Retest(url):
        try:
            url="http://"+url+"/hosts"
            #请求网址
            print(url)
            r = requests.get(url,verify = False,timeout=5)
            #print(str(r.content))
            #content = etree.HTML(r.content)
            #正则返回内容
            name = re.findall(r"UserName=w+", str(r.content))
            passw = re.findall(r"Password=w+", str(r.content))
            #取返回值
            name = name[0]
            passw = passw[0]
            print(name)
            print(passw)
            #这里可以加写入文件的语句
        except:
            pass
    #xpath匹配模型
    def Xpathtest(url):
        #请求url
        try:
            r = requests.get(url,verify = False,timeout=5)
            #print(r)
            #print(type(r))
            #url返回内容进行编码
            r.encoding = 'utf-8'
            #content=r.content.decode('utf-8')
            #print(str(r.content.decode('utf-8')))
            #content = etree.HTML(r.content.decode('utf-8'))
            #print(r.text)
            #html = r.data.decode('utf-8', 'ignore')
            #转换成可以进行xpath读取的格式存起来。
            _element = etree.HTML(r.text)
            #print(type(_element))
            text = _element.xpath("//div[@class='post-meta wrapper-lg']/h2[@class='m-t-none text-ellipsis index-post-title text-title']/a/text()")
            print(text)
            #ipdata = '
    '.join(text)
            #如果获取的是数组可以通过遍历进行输出
            #for i in text:
            #    print(i)
            # 这里可以加写入文件的语句
        except:
            pass
    if __name__ == '__main__':
        file = open('edu.txt', 'r')
        number = file.readlines()
        for i in number:
            i = i.rstrip()
            url = str(i)
            Retest(url)    #账号密码获取
        #url=""
        #Xpathtest(url)
  • 相关阅读:
    基于讯飞语音API应用开发之——离线词典构建
    在Linux下安装redis
    java学习路线
    怎么做压力测试
    性能测试概念及参数介绍
    总结1-JMeter压力测试
    在软件测试面试过程中如何进行自我介绍?
    Python模块常用的几种安装方式
    Jmeter(三)关联数组
    Jmeter(二)关联
  • 原文地址:https://www.cnblogs.com/sunny11/p/14930967.html
Copyright © 2011-2022 走看看