吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 3054|回复: 32
收起左侧

[Python 转载] 利用python爬取二手车之家

  [复制链接]
ygwbLiu 发表于 2022-5-16 15:57
[Python] 纯文本查看 复制代码
import requests
import parsel
import csv
#伪装 请求头
headers = {
    #用户基本信息
    'Cookie': 'fvlid=1652681259525EL1JOKlG4jwu; sessionid=00da8547-d1be-4b57-aaff-70118f7a00cc; sessionip=60.210.137.50; area=370705; sessionvisit=e3633597-6c82-4400-931d-26860d0ca426; sessionvisitInfo=00da8547-d1be-4b57-aaff-70118f7a00cc|cn.bing.com|0; Hm_lvt_d381ec2f88158113b9b76f14c497ed48=1652681260; che_sessionid=454B1328-3097-475C-BCF3-7A5F7D5D5762%7C%7C2022-05-16+14%3A07%3A40.049%7C%7Ccn.bing.com; che_sessionvid=BD3C8084-56F8-4FE7-B6F1-E50FC81FB11D; UsedCarBrowseHistory=0%3A43533318; userarea=0; listuserarea=0; ahpvno=13; ahuuid=C077C62F-23F6-406B-89D7-27E5B5AE4DCE; Hm_lpvt_d381ec2f88158113b9b76f14c497ed48=1652682194; v_no=13; visit_info_ad=454B1328-3097-475C-BCF3-7A5F7D5D5762||BD3C8084-56F8-4FE7-B6F1-E50FC81FB11D||-1||-1||13; che_ref=cn.bing.com%7C0%7C0%7C0%7C2022-05-16+14%3A23%3A14.350%7C2022-05-16+14%3A07%3A40.049; showNum=13; sessionuid=00da8547-d1be-4b57-aaff-70118f7a00cc'
    #浏览器基本信息
    'User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/101.0.4951.64 Safari/537.36 Edg/101.0.1210.47'
}
url = 'https://www.che168.com/china/list/'  #发送请求
respones = requests.get(url=url,headers=headers)
#获取数据,网页源代码
html_data = (respones.text)
#解析数据(网页构造,css样式选择器)
selector = parsel.Selector(html_data)
lis = selector.css('.viewlist_ul li')
for li in lis:
    card_name = li.css('.card-name::text').get()
    cards_unit = li.css('.cards-unit::text').get()
    pirce = li.css('.pirce em::text').get()
    if pirce == None:
        pirce = li.css('.pirce em::text').get()
    print(card_name,cards_unit,pirce)
    #保存数据
    with open('汽车之家.csv',mode='a',newline='', encoding='utf-8') as d:
      csv_writer = csv.writer(d)
      csv_writer.writerow([card_name,cards_unit,pirce])


自己改文件保存路径
微信图片_20220516155727.png

qichezhijia.zip

1.23 KB, 下载次数: 97, 下载积分: 吾爱币 -1 CB

附源代码

免费评分

参与人数 6吾爱币 +6 热心值 +4 收起 理由
ccc2 + 1 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
xinkui + 1 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
liu2514 + 1 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
beyond1994 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
shengforever + 1 用心讨论,共获提升!
chenmo1021 + 1 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!

查看全部评分

本帖被以下淘专辑推荐:

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

 楼主| ygwbLiu 发表于 2022-5-16 17:11
冒个泡 发表于 2022-5-16 16:38
请教一下B列里的4个信息能分类分列保存吗?

[Python] 纯文本查看 复制代码
Option Explicit
 
Sub 分列()
    
    
    '工作表根据各项目类别进行分列
 
    Dim rowNum As Integer, colNum As Integer, sh As Worksheet
 
    
    Dim k As Boolean, i As Integer, j As Integer
    Dim inputCol As Integer, inputRow As Integer
    
    k = True
    
    '根据用户选择,对哪一列的内容进行分列。
    inputCol = InputBox("要拆分第几列的数据?")
    
    '因为每个表的标题行数不一样,手动让用户输入
    inputRow = InputBox("标题行在第几行?")
    
        
    'rowNum:获取sheets(1)的总行数
    'colNum:获取sheets(1)的总列数
    rowNum = ThisWorkbook.Worksheets(1).Cells(inputRow, 1).End(xlDown).row
    colNum = ThisWorkbook.Worksheets(1).Cells(1, inputRow).End(xlToRight).Column
    
    
    '根据要分的列,遍历用户输入的行数+1到总行数,确定要新建多少个sheets
    For i = inputRow + 1 To rowNum
        For Each sh In Sheets
        
            '判断单元格内容,如果表名已存在,就不干啥
            If sh.Name = Sheets(1).Cells(i, inputCol) Then
               k = False
               Exit For
            End If
        Next
        If k = True Then
            '判断单元格内容,如果表名不存在,就新建一张表,命名为这个单元格的内容
            Sheets.Add(after:=Sheets(Sheets.Count)).Name = Sheets(1).Cells(i, inputCol)
        End If
        k = True
    Next
    
    '新建完sheets后,筛选sheets(1)表格,复制到每张表里
    For i = 2 To Sheets.Count
        '从sheets(2)开始,先清除表格内容,防止存在其他内容,并设置为文本格式,防止身份证等长数字复制出错
        Sheets(i).Cells.ClearContents
        Sheets(i).Cells.NumberFormat = "@"
        
        '根据用户输入的函数进行筛选
        Sheets(1).Select
        Rows(inputRow).Select
        Selection.AutoFilter
        '根据输入要分列的列数,匹配各sheets名称,对应名称复制过去
        Cells(inputRow, 1).AutoFilter Field:=inputCol, Criteria1:=Sheets(i).Name
        Sheets(1).Range(Cells(1, 1), Cells(rowNum, colNum)).Copy Sheets(i).Range("A1")
        Sheets(1).Cells(inputRow, 1).AutoFilter
 
    Next
    
    '让每个生成完毕的表格的列宽度和sheets(1)的宽度一致
    For i = 2 To Worksheets.Count
        For j = 1 To colNum
            Sheets(i).Columns(j).ColumnWidth = Sheets(1).Columns(j).ColumnWidth
        Next j
    Next i
    
    '全部完成后,返回到sheets(1)
    Sheets(1).Select
    
End Sub
a147888123 发表于 2022-5-24 23:58
楼主是用parsel选择器,已经抄了一边,但是想用XPATH实现下,把CSDN翻了一圈,实现了根原来一样得效果
[Python] 纯文本查看 复制代码
# file0 = open("二手车 test.html", "r")
# content = file0.read()
# print(type(content))  # <class 'str'>
# print(content)
# file0.close()
import xlwt
from lxml import etree
with open('二手车 test.html', 'r') as xml_file:

    xml_file = xml_file.read()
    # print(xml_file)
    tree = etree.HTML(xml_file)
    # tree = etree.parse(xml_file)
    r1 = tree.xpath('//*/a/div[2]/h4')  # 直接从上往下挨着找节点宝马X3 2020款 xDrive28i M运动套装
    # //*[@id="shucar_42586534"]/a/div[2]/p  4.15万公里/2019-12/淮南/2年黄金商家
    r2 = tree.xpath('//*/a/div[2]/p')
    # //*[@id="shucar_42586534"]/a/div[2]/div[1]/span[1]/em
    r3 = tree.xpath('//*/a/div[2]/div[1]/span[1]/em')
    # 但是这个ID是固定得我想取得所有得,所以试着把ID删了
    # print(r1)
    # 接下来写到XLS中去
wb = xlwt.Workbook(encoding="utf-8")
ws = wb.add_sheet('测试数据')
for i in range(0, len(r1)):
    ws.write(i, 0, r1[i].text)
    ws.write(i, 1, r2[i].text)
    ws.write(i, 2, r1[i].text)
    print(r1[i].text)
    print(r2[i].text)
    print(r3[i].text)
wb.save('xpth汽车之家.xls')

免费评分

参与人数 1吾爱币 +1 收起 理由
damoguyan666 + 1 我很赞同!

查看全部评分

冒个泡 发表于 2022-5-16 16:38
120360047 发表于 2022-5-16 16:44
如果实现实时的话 那这个就厉害了
chenmo1021 发表于 2022-5-16 16:46
二手车的信息就太方便了。!
hello6word 发表于 2022-5-16 16:49
学习学习经验,谢谢大佬
韩哲 发表于 2022-5-16 17:00
一直不知道怎么制作爬虫
 楼主| ygwbLiu 发表于 2022-5-16 17:12
韩哲 发表于 2022-5-16 17:00
一直不知道怎么制作爬虫

可以去B站看下,有很多
xiaoniba1028 发表于 2022-5-16 17:34
非常感谢,有用
f3981292 发表于 2022-5-16 17:36
Microsoft Windows [版本 6.1.7601]
版权所有 (c) 2009 Microsoft Corporation。保留所有权利。

C:\Users\Administrator\AppData\Local\Programs\Python\Python38-32>python qichezhijia.py
Traceback (most recent call last):
  File "qichezhijia.py", line 1, in <module>
    import requests
ModuleNotFoundError: No module named 'requests'

怎么运行?菜鸟不懂啊
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-25 06:59

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

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