福州网站建设yfznkj,wordpress oa插件,自己做的网站怎么被搜索出来,seo教程2019/1/24 中午路飞学成 爬虫课程 实验及笔记。 Xpath是路飞爬虫课程中老师说的三种解析方式之一#xff0c;前面是re正则表达式的解析方式#xff0c;现在是xpath的解析方式#xff0c;后面还有一个是bs4的解析方式。 re其实我理解的很困难#xff0c;而且到现在都还不怎么…2019/1/24 中午路飞学成 爬虫课程 实验及笔记。 Xpath是路飞爬虫课程中老师说的三种解析方式之一前面是re正则表达式的解析方式现在是xpath的解析方式后面还有一个是bs4的解析方式。 re其实我理解的很困难而且到现在都还不怎么理解这个东西到底应该怎么去组合起来进行匹配反而这个Xpath我个人觉得比较好理解他就是通过一步一步的去解析网页的结构来找到你想要的东西比如有一个三级的结构你就可以用xpath一级一级的去往下走直到到达你需要的点就ok了。而且还可以进行模糊查找和逻辑查找。 下面是代码 # 需求使用xpath对段子网的内容和标题进行解析并存储到本地 import os import requests from lxml import etree# 指定本地数据存储位置if not os.path.exists(./Duan zi word): os.mkdir(Duan zi word)# 获取用户输入的页码范围start_page int(input(Enter a start pageNum:))end_page int(input(Enter a end pageNum:))# 打开文件并生成文件句柄fp open(Duan zi word/duanzi.txt, w, encodingutf-8)# 指定url 和请求头信息headers { User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/65.0.3325.181 Safari/537.36}for num in range(start_page, end_page 1, 1): url http://duanziwang.com/page/ str(num) # 发起请求并获取返回数据 response requests.get(urlurl, headersheaders) if response.status_code 200: page_text response.text # 实例化etree对象并对获取的网页数据进行初步解析 tree etree.HTML(page_text) article_list tree.xpath(//article[contains(id,)]) # 这里是使用了模糊匹配用contains取所有包含id的标签这个里面和课程有点不一样能是网站更新了吧 # 对初步解析得到的数据进行二次解析得到标题和正文。xpath得到的Element对象都可以再次调用xpath for li in article_list: title li.xpath(./div[classpost-head]/h1[1]/a/text())[0] # 解析初标题的信息存到变量中后面写入用 ./是表示在当前标签下去进行查找当前标签就是这个的父级标签 content li.xpath(./div[classpost-content]/p[1]/text()) # 解析出内容的信息。 try: fp.write(title \n str(content[0]) \n\n) print(\033[31m %s \033[m 已完成写入 % title) except: fp.write(title \n\n) print(\033[32m索引错误\033[m \n) else: print(\033[41m链接访问异常请重新尝试连接....\033[m)做这个案例的时候碰到了一个小的问题就是在后面进行二次解析的时候发现会有拿到的列表中有空的你对空列表进行切片的时候就会报错超出了列表的索引的范围没有想到很好的办法进行解决就尝试使用了异常处理try 和 except进行处理没有问题的就直接写入到文件里面去有问题的就给放在except中去执行只写一个列表进去这个问题只存在在内容里面标题是没有这样的问题的因为标题是都有的内容呢可能是有些用户没有去写吧或者直接就吧标题当成了内容就保存就会出现空的列表的问题。 转载于:https://www.cnblogs.com/wei-yu/p/10317052.html