返回顶部

正则与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 = '\n'.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)

 

posted @ 2021-06-25 15:02  11阳光  阅读(147)  评论(1编辑  收藏  举报