英文网站建设风格特点海外直邮购物网站
2026/4/18 13:01:55 网站建设 项目流程
英文网站建设风格特点,海外直邮购物网站,长沙网红打卡地,深圳市万齐创想科技有限公司1. xpath 查找 1.1 xpath介绍#xff1a; 1.lxml是python的一个解析库#xff0c;支持HTML和XML#xff0c;支持XPath解析方式#xff0c;而且解析效率非常高。 2.XPath#xff0c;全称XML Path Language ,即XML路径语言#xff0c;它是一门在XML文档中查找信息的语言1.lxml是python的一个解析库支持HTML和XML支持XPath解析方式而且解析效率非常高。2.XPath全称XML Path Language ,即XML路径语言它是一门在XML文档中查找信息的语言它最初是用来搜寻XML文档的但是它同样适用于HTML文档的搜索。3.全称为XML Path Language 一种小型的查询语言4.说到XPth这门语言不得不说它所具备的优点1.可在XML中查找信息2.支持HTML的查找3.通过元素和属性进行导航1.2 xpath常用规则1 .nodename——选取此节点的所有子节点2. /——从当前节点选取直接子节点3. //——从当前节点选取子孙节点4. . ——选取当前节点5. … ——选取当前节点的父节点6. ——选取属性xpath 操作#导入lxml模块fromlxmlimportetreewithopen(XpathDemo.html,r,encodingutf8)asf:#html可以接收 byte 和字符串连接#etree.HTML()可以用来解析字符串格式的HTML文档对象htmletree.HTML(f.read())# / 从根节点选取节点·print(html.xpath(/html/head))# // 从当前节点选取子孙节点print(html.xpath(//div))print(html.xpath(/html/body//p))#xpath 匹配结果为列表ulhtml.xpath(//ul[0])# xpath 跟谁调用无关 只跟表达式有关print(ul.xpath(ul//head))# . 选取当前节点print(ul.xpath(./li))# .. 选取当前节点的父节点print(print(ul.xpath(../p)))# [index] 根据下标选取节点print(ul.xpath(./li[3]/p/span/text()))# index值 可以为函数 last()结果 表示最后一个print(ul.xpath(./li[last()]/p/span/text()))print(ul.xpath(./li[last()-1]/p/span/text()))2. jsonpath使用xpathJSONPathDescription/$表示根元素.当前元素/.or [ ]子元素…n/a父元素//…递归下降JSONpath从E4x借鉴的**通配符表示所有元素n/a属性访问字符[][]子元素操作符|[,]连接操作符在xPath结果合并其他结点集合JSONP允许name或者数组索引n/a[startstep]数组分割操作从ES4借鉴[]?()应用过滤表示式n/a脚本表达式使用在脚本引擎下面()n/aXpath分组fromjsonpathimportjsonpathimportjsonwithopen(area.json,r,encodingutf8)asf:datajson.load(f)print(data,type(data))# $ 根元素# . 子元素# 获取根元素下content结点的第一个元素contentjsonpath(data,$.content)print(content)#获取所有id节点值print(jsonpath(content,$..id))#[] 子元素print(jsonpath(content,$.data[0]))print(jsonpath(content,$.data[:2]))print(jsonpath(content,$.data[:-1]))print(jsonpath(content,$.data[(.length-1)]))print(jsonpath(content,$.data[?(.code)]))# * 通配符 表示所有元素# 获取data节点下第一个元素的所有节点值print(jsonpath(content,$.data[0].*))案例从17k网站提取数据importrequestsfromjsonpathimportjsonpath headers{User-Agent:Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/116.0.0.0 Safari/537.36}#登陆网址login_urlhttps://passport.17k.com/ck/user/login#书架网址books_urlhttps://user.17k.com/ck/author2/shelf?page1appKey2406394919form_data{loginName:17590967558,password:z310425}#创建会话sessionrequests.session()login_responsesession.post(login_url,headersheaders,dataform_data)print(login_response.status_code)print(login_response.cookies)#获取书架信息books_responsesession.get(books_url,headersheaders)#获取所有书名和作者名# print(books_response.json())print(jsonpath(books_response.json(),$..))print(jsonpath(books_response.json(),$..authorPenName))3. 正则查找re 是匹配字符串内容的一种规则1.re.compile 正则表达式的语法2.re.search 找一个3.re.match从头找一个 没有返回None4.re.findall 找所有 返回列表. —— 匹配任意字符除了换行符re.DOTALL标记被指定时则可以匹配包括换行符的任意字符*——匹配0个或多个的表达式——匹配1个或多个的表达式——匹配0个或1个由前面的正则表达式定义的片段非贪婪方式[]——表示一组字符‘|’——A|B,创建一个正则将匹配A或B。\s——匹配任何空白字符\d——匹配任何数字4.csv4.1 介绍csv 文件是大数据文件存储格式的文件 结构与excel不同。csv 是一种通用的相对简单的文件格式被用户商业和科学广泛应用。最广泛的应用是在程序之间转移表格数据而这些程序本身是在不兼容的格式上进行操作的。因为大量程序都支持某种csv变本至少是作为一种可选择的输入\输出格式。例如一个用户可能需要交换信息从一个以私有格式存储数据的数据库程序到一个数据格式完全不同的电子表格。最可能的情况是该数据库程序可以导出数据为csv,然后被导出的csv文件可以被电子表格程序导入。案例列表——》listcsv文件_写入数据importcsv#定义表头headers[book_name,author_name,book_type]#列表数据book_rows_li[[网游开局防御加满化身移动要塞,谒始,游戏竞技],[全球废土我以机械比肩神明,岐峰,科幻末世],[民间诡梦实录,王诡一,都市小说],[奶包三岁半我是全豪门的团宠,惊颜,现代言情],[万恶的考试和资本,白日不栽柳,浪漫青春]]withopen(ccc/books1.csv,w,encodingutf8,newline)aswf:#创建一个写入对象csv_writercsv.writer(wf)#写入表头csv_writer.writerow(headers)#写入多行数据csv_writer.writerows(book_rows_li)css文件_读取数据#读取css文件 以列表格式输出withopen(ccc/books1.csv,r,encodingutf8,newline)asrf:#创建一个读取(可迭代对象)readercsv.reader(rf)#写入表头next(reader)forrowinreader:print(row)字典——》dictcsv文件_写入数据#写入字典数据到csv文件 --常用方式withopen(ccc/books2.csv,w,encodingutf8,newline)aswf:#创建写入对象 需要传递表头 目的:确定数据写入位置writercsv.DictWriter(wf,headers)#写入表头writer.writeheader()#写入多行数据writer.writerows(book_rows_li)css文件_读取数据#读取字典数据到csv文件 --常用方式withopen(ccc/books2.csv,r,encodingutf8,newline)asrf:#创建写入对象 需要传递表头 目的:确定数据写入位置readercsv.DictReader(wf,headers)#写入表头next(reader)forrowinreader:print(row)案例——爬取壁纸importreimportrequests_html sessionrequests_html.HTMLSession()urlhttp://www.netbian.com/responsesession.get(url)#设置网页解析的编码模式(根据网页编码确定)response.encodinggbkhtmlresponse.text#编译正则表达式 re.s 设置匹配换行 re.I 设置匹配对大小写不敏感patternre.compile(rimg src(.*?).*?,re.S|re.I)print(pattern.findall(html))

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询