当前位置: 首页 > news >正文

珠海网站建设防酒店网站建设报价单

珠海网站建设防,酒店网站建设报价单,网页制作模板word,手机快速注册针对数据提取的项目实战&#xff1a; 补充初始爬虫6的一个知识点&#xff1a; etree.tostring能够自动补全html缺失的标签&#xff0c;显示原始的HTML结构 # -*- coding: utf-8 -*- from lxml import etreetext <div> <ul> <li class"item-1">…

针对数据提取的项目实战:

补充初始爬虫6的一个知识点:

etree.tostring能够自动补全html缺失的标签,显示原始的HTML结构

# -*- coding: utf-8 -*-
from lxml import etreetext = '''
<div>  <ul>  <li class="item-1"><a href="link1.html">first item</a></li>  <li class="item-1"><a href="link2.html">second item</a></li>  <li class="item-inactive"><a href="link3.html">third item</a></li>  <li class="item-1"><a href="link4.html">fourth item</a></li>  <li class="item-0"><a href="link5.html">fifth item</a></li>  </ul>  
</div>
'''html = etree.HTML(text)
print(etree.tostring(html))

运行结果,可以看出body等标签自动已补全。

 实现对百度贴吧爬取:

注意点1: 

网站对于要抓取的数据进行了注释操作,解决方法:

方法一:老年浏览器(user-agent)

方法二:注释符号(<!--  -->)替换("" "")

这里提供一些老版本的User-Agent :

[  
    "Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0) ",  
    "Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0; DigExt) ",  
    "Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0; TUCOWS) ",  
    "Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0; .NET CLR 1.1.4322) ",  
    "Mozilla/4.0 (compatible; MSIE 5.5; Windows NT 5.0) ",  
    "Mozilla/4.0 (compatible; MSIE 5.5; Windows NT 5.0; by TSG) ",  
    "Mozilla/4.0 (compatible; MSIE 5.5; Windows NT 5.0; .NET CLR 1.0.3705) ",  
    "Mozilla/4.0 (compatible; MSIE 5.5; Windows NT 5.0; .NET CLR 1.1.4322) ",  
    "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0) ",  
    "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; ) ",  
    "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; T132461) ",  
    "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; .NET CLR 1) ",  
    "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; en) Opera 8.0 ",  
    "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; TencentTraveler ) ",  
    "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; zh-cn) Opera 8.0 ",  
    "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; .NET CLR 1.1.4322) ",  
    "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; .NET CLR 1.1.4322; FDM) ",  
    "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; Maxthon; .NET CLR 1.1.4322) ",  
    "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; MathPlayer 2.0; .NET CLR 1.1.4322) "  
]

注意点2: 

Xpath路径查看方法,两次对比解决不同之处实现 :

所以得到xpath路径://*[@id="thread_list"]/li/div/div[2]/div[1]/div[1]/a

 注意点3:

翻页处理时,跳转网址可能缺少部分网址:

temp['link'] = 'https://tieba.baidu.com' + el.xpath('./@href')[0]
next_url = 'https:' + html.xpath('//a[contains(text(),"下一页>")]/@href')[0]

 

同时对于翻页的xpath路径,需要特别注意:

例如上面原本翻页方法:

//a[@class="next pagination- item"]/@href 

处理一页数据后,直接得到None,换方法之后实现正确翻页处理:

//a[contains(text(),"下一页>")]/@href

# -*- coding: utf-8 -*-
import requests
from lxml import etree# url
# headers
# 发送请求获取响应
# 从响应中提取数据
# 判断结束
class Tieba(object):def __init__(self, name):self.url = "https://tieba.baidu.com/f?kw={}".format(name)print(self.url)self.headers = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/128.0.0.0 Safari/537.36"# "User-Agent": "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; T132461)"}def get_data(self, url):response = requests.get(url, headers=self.headers)with open("temp.html", "wb") as f:f.write(response.content)return response.contentdef parse_data(self, data):# 创建element对象data = data.decode().replace("<!--", "").replace("-->", "")html = etree.HTML(data)el_list = html.xpath('//*[@id="thread_list"]/li/div/div[2]/div[1]/div[1]/a')# print(len(el_list))data_list = []for el in el_list:temp = {}temp['title'] = el.xpath('./text()')[0]temp['link'] = 'https://tieba.baidu.com' + el.xpath('./@href')[0]data_list.append(temp)# 获取下一页urltry:next_url = 'https:' + html.xpath('//a[contains(text(),"下一页>")]/@href')[0]except:next_url = Nonereturn data_list, next_urldef save_data(self, data_list):for data in data_list:print(data)def run(self):next_url = self.urlwhile True:# 发送请求获取响应data = self.get_data(next_url)# 从响应中提取数据,数据和翻页用的urldata_list, next_url = self.parse_data(data)self.save_data(data_list)print(next_url)# 判断是否结束if next_url == None:breakif __name__ == '__main__':tieba = Tieba("美食天下")tieba.run()

http://www.yayakq.cn/news/840604/

相关文章:

  • 浙江省建设工程质监站网站外包加工网是不是骗人的
  • 沧浪企业建设网站方法网上做网站怎么赚钱
  • 深圳网站制作公司平台网站开发的技术总结
  • 手机算命网站建设统一门户平台
  • 昆山智能网站建设企业所得税税率三个档次
  • 宝洁公司网站建设案例免费素材哪个网站比较好
  • 动漫一级a做爰片免费网站制作宣传片视频
  • 做一网站多少钱网站开发要多久
  • 政务网站的建设百度的合作网站有哪些
  • 做自己的游戏网站西部数码做跳转网站
  • 网站设计基本要求网站上截小屏幕 怎么做
  • 17一起做网站后台网站建设的完整流程包括
  • 做网站一般用什么程序户型单页设计
  • 网站开发有哪些课程域名注册时间查询
  • 如何推广自己的外贸网站济南建站网站
  • 设计制作一个生态瓶国内正规seo网络推广
  • 国家住房和城乡建设部中国建造师网站官网江苏网站建设市场
  • 青岛做网站哪家优化好wordpress 面包
  • 邵阳建设银行网站网络规划设计师是副高
  • 如何做楼盘网站新安县做网站
  • addfilter wordpress企业网站seo优
  • 手机企业网站程序wordpress导航站主题
  • 做行业网站投资多少西宁市城东区住房和建设局网站
  • 买的服务器做两个网站茶叶网络营销网站建设论文
  • 青岛做一个网站多少钱家装设计网页论文
  • 烟台网站制作哪家好怎么宣传自己的产品
  • 十大博物馆展陈设计公司seo关键词排名公司
  • 做全景效果图的网站上海市人才服务中心网首页
  • 网站源码模板简述网站的建设流程
  • 网站模板 英文wordpress怎么调中文