需求:
1.爬取情话网站中表白里面的全部句子(表白词_表白的话_表白句子情话大全_情话网)
2.利用XPath来举行解析
3.使用面向对象形发哀求——创建一个类
4.将爬取下来的数据保存在数据库中
写出对应解析语法
- //div[@class="box labelbox"]/h4/a/@href
复制代码
如此照推,详情页文本对应的解析语法
- //div[@class="stbody "]//p[1]/text()|//div[@class="stbody first"]//p[1]/text()
复制代码 示例代码:
- import requests
- from lxml import etree
- import pymysql
- #面向对象发请求 1.创建一个类
- class Spiderqinghua():
- def __init__(self):
- self.url ='http://www.ainicr.cn/qh/t8.html'
- self.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'
- }
- #建立与MySQL的连接
- self.db = pymysql.connect(user='root',password='wx990826',database='pingping')
- self.cursor=self.db.cursor()#获取操作游标
- def get_data(self,url):
- r = requests.get(url=url,headers=self.headers)
- return r.text
- def get_list_data(self,data):#列表页
- #//div[@class="box labelbox"]/h4/a/@href
- xml=etree.HTML(data)
- hrefs = xml.xpath('//div[@class="box labelbox"]/h4/a/@href')
- # print(hrefs)
- return hrefs
- def parse_data(self,data):#详情页
- xml=etree.HTML(data)
- content = xml.xpath('//div[@class="stbody "]//p[1]/text()|//div[@class="stbody first"]//p[1]/text()')
- for contents in content:
- print('文本:',contents)
- print('=====================')
- self.save_data(contents)
- def save_data(self,qinghua):
- sql = 'insert into qinghua_data(text) value ("%s")'
- self.cursor.execute(sql,[qinghua])#执行sql语句
- self.db.commit()#提交
- def main(self):
- html_data=self.get_data(self.url)
- hrefs = self.get_list_data(html_data)
- for href in hrefs:
- print('详情页连接:',href)
- x_data = self.get_data(href)
- # print(x_data)
- self.parse_data(x_data)
- #//div[@class="stbody "]//p[1]/text()|//div[@class="stbody first"]//p[1]/text()
- if __name__ == '__main__':
- spider=Spiderqinghua()
- spider.main()
- # h = spider.get_data()
- # # print(h)
- # spider.get_list_data(h)
复制代码 运行结果:
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。 |