爬虫案例——爬取情话网数据

打印 上一主题 下一主题

主题 809|帖子 809|积分 2427

需求:
1.爬取情话网站中表白里面的全部句子(表白词_表白的话_表白句子情话大全_情话网)
2.利用XPath来举行解析
3.使用面向对象形发哀求——创建一个类
4.将爬取下来的数据保存在数据库中







写出对应解析语法
  
  1. //div[@class="box labelbox"]/h4/a/@href
复制代码

如此照推,详情页文本对应的解析语法
  
  1. //div[@class="stbody "]//p[1]/text()|//div[@class="stbody first"]//p[1]/text()
复制代码
示例代码:
  1. import requests
  2. from lxml import etree
  3. import pymysql
  4. #面向对象发请求 1.创建一个类
  5. class Spiderqinghua():
  6.     def __init__(self):
  7.         self.url ='http://www.ainicr.cn/qh/t8.html'
  8.         self.headers = {
  9.             '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'
  10.         }
  11.         #建立与MySQL的连接
  12.         self.db = pymysql.connect(user='root',password='wx990826',database='pingping')
  13.         self.cursor=self.db.cursor()#获取操作游标
  14.     def get_data(self,url):
  15.         r = requests.get(url=url,headers=self.headers)
  16.         return r.text
  17.     def get_list_data(self,data):#列表页
  18.         #//div[@class="box labelbox"]/h4/a/@href
  19.         xml=etree.HTML(data)
  20.         hrefs = xml.xpath('//div[@class="box labelbox"]/h4/a/@href')
  21.         # print(hrefs)
  22.         return hrefs
  23.     def parse_data(self,data):#详情页
  24.         xml=etree.HTML(data)
  25.         content = xml.xpath('//div[@class="stbody "]//p[1]/text()|//div[@class="stbody first"]//p[1]/text()')
  26.         for contents in content:
  27.             print('文本:',contents)
  28.             print('=====================')
  29.             self.save_data(contents)
  30.     def save_data(self,qinghua):
  31.         sql = 'insert into qinghua_data(text) value ("%s")'
  32.         self.cursor.execute(sql,[qinghua])#执行sql语句
  33.         self.db.commit()#提交
  34.     def main(self):
  35.         html_data=self.get_data(self.url)
  36.         hrefs = self.get_list_data(html_data)
  37.         for href in hrefs:
  38.             print('详情页连接:',href)
  39.             x_data = self.get_data(href)
  40.             # print(x_data)
  41.             self.parse_data(x_data)
  42. #//div[@class="stbody "]//p[1]/text()|//div[@class="stbody first"]//p[1]/text()
  43. if __name__ == '__main__':
  44.     spider=Spiderqinghua()
  45.     spider.main()
  46.     # h = spider.get_data()
  47.     # # print(h)
  48.     # spider.get_list_data(h)
复制代码
运行结果:


 

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

正序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

罪恶克星

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表