正则与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)