CSS选择器学习

import requests
import parsel  #使用css选择器需要调用parsel模块
import csv
#创建文件
f = open('火锅.csv', mode='a', encoding='utf-8', newline='')
#csv模块进行保存
csv_writer = csv.DictWriter(f, fieldnames=[
    '店面',
    '评论',
    '人均消费',
])
#写入标头
csv_writer.writeheader()

url = 'https://www.dianping.com/search/keyword/1/0_%E6%8E%92%E9%AA%A8'
headers = {
    #用户信息,常用于检测是否登录账号
    "Cookie": "_lx_utm=utm_source%3Dbing%26utm_medium%3Dorganic; _lxsdk_cuid=1858068cce8c8-0cca36671117dd-7a575473-144000-1858068cce8c8; _lxsdk=1858068cce8c8-0cca36671117dd-7a575473-144000-1858068cce8c8; Hm_lvt_602b80cf8079ae6591966cc70a3940e7=1672896630; _hc.v=cec4d590-adbd-407a-ae25-b1207b109670.1672896630; fspop=test; s_ViewType=10; Hm_lpvt_602b80cf8079ae6591966cc70a3940e7=1672896958; _lxsdk_s=1858068cce8-f-138-244%7C%7C79",
    #域名
    "Host": "www.dianping.com",
    #防盗链,告诉服务器请求url是从哪里跳转过来的
    "Referer": "https://www.dianping.com/search/keyword/1/0_%E7%81%AB%E9%94%85",
    #用户代理,表示浏览器基本身份表示
    "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/108.0.0.0 Safari/537.36 Edg/108.0.1462.54"
}
resp = requests.get(url,headers=headers)
#print(resp.text)
#常规第一步进行爬取想要页面得html,然后在下一步进行数据解析
#使用CSS选择器首先要对resp.text进行封装
selector = parsel.Selector(resp.text)
#通过css选择器获取所有详情页的连接地址,观看连接地址在哪里,.getall()获取所有
#提前a标签中的href属性
href = selector.css('.shop-list ul li .pic a::attr(href)').getall()
#a:after 表示在 <a> 内容的后面,content: 表示要添加的内容,attr(href) 表示获取当前标签,即 <a> 的 href 属性。
#print(href)#得到详情页链接列表
for index in href:
    # 对详情页连接发送请求获取数据
    html_data = requests.get(url=inedx, headers=headers).text
    # 解析数据,复制粘贴我们想要的店铺信息
    selector_1 = parsel.Selector(html_data)
    # 获取店面
    title = selector_1.css('.shop-name::text').get()
    # 获取评论
    count = selector_1.css('#reviewCount::text').get()
    # 人均消费
    Price = selector_1.css('#avgPriceTitle::text').get()
    dit = {
        '店面': title,
        '评论': count,
        '人均消费': Price
    }
    # 写入数据
    csv_writer.writerow(dit)
    print(dit)
import requests
import parsel
import csv

f = open('热搜排名.csv', mode='a', encoding='utf-8', newline='')
'''
mode="a"追加写入,假如是 mode= 'w' 则是覆盖写入, 如果是 mode='r' 则是只读
如果 csvfile 是文件对象,则打开它时应使用 newline=‘’。
其备注:如果没有指定 newline=‘’,则嵌入引号中的换行符将无法正确解析,并且在写入时,使用 \r\n 换行的平台会有多余的 \r 写入。由于 csv 模块会执行自己的(通用)换行符处理,因此指定 newline=‘’ 应该总是安全的。
'''
csv_writer = csv.DictWriter(f, fieldnames=[
    '标题',
    '热度',
])
csv_writer.writeheader()

url = 'https://s.weibo.com/top/summary?cate=entrank'
headers = {
    "cookie": "SUB=_2AkMU6G3df8NxqwJRmP0VyW_hZYxwyAjEieKitJwGJRMxHRl-yT9kqncNtRB6P2hDMkqYBf6CwyQael6Xc0iYHGVxOYtF; SUBP=0033WrSXqPxfM72-Ws9jqgMF55529P9D9WWB95uUz9ZlVy-XqnmmuFch; _s_tentry=passport.weibo.com; Apache=6472805287302.601.1672798955322; SINAGLOBAL=6472805287302.601.1672798955322; ULV=1672798955329:1:1:1:6472805287302.601.1672798955322:",
    "user-agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/108.0.0.0 Safari/537.36 Edg/108.0.1462.54"
}
resp = requests.get(url,headers=headers)
#print(resp.text)
selector = parsel.Selector(resp.text)
trs = selector.css('#pl_top_realtimehot table tbody tr')

num = 1
for tr in trs:
    #获取标题
    title = tr.css('.td-02 a::text').get()
    hot = tr.css('.td-02 span::text').get()
    #print(title, hot)
    dit = {
        '标题': title,
        '热度': hot,
    }
    csv_writer.writerow(dit)
    num += 1'''
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

浅*默

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值