首页 > 其他分享 >【爬虫】XPath实例

【爬虫】XPath实例

时间:2022-10-06 18:13:00浏览次数:88  
标签:XPath xpath tr 爬虫 replace 实例 str print csv

题目要求我们用XPATH去爬某个网站并且保存为CSV文件
代码如下,仅供参考

# -*- coding: UTF-8 -*-
# 开发人员:萌狼蓝天
# 博客:Https://mllt.cc
# 笔记:Https://cnblogs.com/mllt
# 哔哩哔哩/微信公众号:萌狼蓝天
# 开发时间:2022/10/5
import pandas as pd
import requests
import lxml.html

csv_data = pd.DataFrame(columns=["序号", "标题", "链接", "作者", "点击", "回复", "更新时间"])
# 获取页面源码
headers = {
    "User-Agent": "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 10.0; WOW64; Trident/7.0; .NET4.0C; .NET4.0E; Tablet PC 2.0; wbx 1.0.0; wbxapp 1.0.0; Zoom 3.6.0)",
    "X-Amzn-Trace-Id": "Root=1-628b672d-4d6de7f34d15a77960784504"
}
code = requests.get("http://bbs.tianya.cn/list-no02-1.shtml", headers=headers).content.decode("utf-8")
print("-------------------------------------------------获取源码-----------------------------------")
# print(code)
selector = lxml.html.fromstring(code)
print("-------------------------------------------------获取关键部分-----------------------------------")
lists = selector.xpath('//div[@class="mt5"]/table')
print("-------------------------------------------------获取单独部分-----------------------------------")
print(len(lists))
for i in lists:
    x = 0
    for j in range(2, 9):
        for c in range(1, 11):
            x += 1
            title = i.xpath('//tbody[' + str(j) + ']/tr[' + str(c) + ']/td[1]/a/text()')[0].replace("\t", "").replace("\r", "").replace("\n", "")
            link = i.xpath('//tbody[' + str(j) + ']/tr[' + str(c) + ']/td[1]/a')[0].attrib['href'].replace("\t", "")
            author = i.xpath('//tbody[' + str(j) + ']/tr[' + str(c) + ']/td[2]/a/text()')[0].replace("\t", "")
            click = i.xpath('//tbody[' + str(j) + ']/tr[' + str(c) + ']/td[3]/text()')[0].replace("\t", "")
            reply = i.xpath('//tbody[' + str(j) + ']/tr[' + str(c) + ']/td[4]/text()')[0].replace("\t", "")
            reply_time = i.xpath('//tbody[' + str(j) + ']/tr[' + str(c) + ']/td[5]/text()')[0].replace("\t", "")
            csv_data=csv_data.append({"序号": x, "标题": title, "链接": 'http://bbs.tianya.cn/'+link, "作者": author, "点击": click, "回复": reply,
                             "更新时间": reply_time}, ignore_index=True)
            print(title, link, author)
print(csv_data)
csv_data.to_csv("result.csv")

往期文章

【爬虫】爬虫简单举例(三种写法) 涉及requests、urllib、bs4,re

标签:XPath,xpath,tr,爬虫,replace,实例,str,print,csv
From: https://www.cnblogs.com/mllt/p/sprder-xpath-eg.html

相关文章

  • python中的decimal类型转换实例详解
    1.Decimal类型的优点Decimal类型是在浮点类型的基础上设计的,但是它在几个地方上要优于floatingpoint:1)Decimal类型可以非常精确地在计算机中存储,而学过c++的都知道,浮点......
  • 01爬虫简介
    01爬虫简介1.jupyter安装与打开简介:jupyter是一个交互式笔记本,是一个基于web页面的开发工具,集成了数据分析和机器学习开发环境。用途:学习、笔记共享,探索,开发数据分......
  • python socket 网页爬虫
    importsocket#第一步获取域名或ip地址host='www.baidu.com'port=80header=b'GET/HTTP/1.1\r\nHost:www.baidu.com\r\nConnection:close\r\n\r\n'#第二步域......
  • Python爬虫
    目录MangoDBRedis爬虫常用库安装seleniumlxmlbeautifulsouppyquerypymysqlpymongoRedisFlaskDjango爬虫原理正则表达式BeautifulSoup解析库基本使用标签选择器标准选择器CS......
  • python爬虫使用session保持登录状态
    今天有个客户需求,从网站上下载会员试题,需要在登录状态下载,然后将网页中展示的试题保存在word中。网站上展示的所有试题要保存在一个word文档中,但是每一个试题结束下一个试......
  • exchange邮件爬虫
    #!/usr/bin/python3#coding=utf8from__future__importprint_functionimportshutilfromexchangelibimportCredentials,Account,Configuration,DELEGATE,Fi......
  • idea通过service同时启动一个服务的多个实例
    找到Services如果找不到,需要去toolwindow下找到Service你要启动项目选中,shift可多选,选中以后右键,创建分组后续只需要启动一次就够了......
  • 关于静态方法中访问类的实例成员的两种方法
    之前的动手动脑我理解错了老师的意思,,写的程序并不能完全符合老师的要求,今天再写一遍复习一下。(1)把静态方法的参数变成类的实例化对象,简单代码和运行程序如下:  (2)在静......
  • python 爬虫(正则)
    ......
  • java如何在静态方法中访问类的实例成员
    类的静态方法是不能直接访问实例的成员的,它只能访问同类的静态成员。访问实例的成员的话,可以参考一下这个方法,那就是把静态方法的参数设置为类的实例,这样通过参数传递的方......