CSS Selector—选择方法,和html自动——异步社区的爬取(动态网页)——爬虫(get和post的区别)

这里先说一下GET请求和POST请求:

post我们平时是要加data的也就是信息,你会发现我们平时百度之类的 搜索都是post请求

get我们带的是params,是发送我们指定的内容。

要注意是get和post请求!!!

先说一下异步社区的爬取吧!!!

python 复制代码
import ast
import json
import os
import requests
import re

img_path = "异步社区免费书名"
img_path = f"./{img_path}/"  # 指定保存地址
if not os.path.exists(img_path):
    print("您没有这个文件为您新建一个文件---")
    os.mkdir(img_path)
else:
    print(f"为您保存在{img_path}文件夹中")

url = 'https://www.epubit.com/pubcloud/operation/front/portal/getData?'

hearder = {
    'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/121.0.0.0 Safari/537.36 Edg/121.0.0.0',
    'Cookie':'acw_tc=2760778817075767822875772e9bcf3ab5beae1aa1ebb67787560accfa3087'
}
for i in range(1,4,1):
    params = {
        'policyId': '97a5bcb8-54c2-4649-ac37-72a11b0490dc',
        'floorCode': 'A1',
        'more': 'true',
        'page': f'{i}',
        'row': '10'
    }

    response = requests.get(url,headers=hearder,params=params).text
    #print(response)
    dic = json.loads(response)
    # print(dic)
    # print(type(dic))
    dic2 = dic['data']
    dic3 = dic2['records']
    for i in range(0,len(dic3),1):
        content = dic3[i]['name']
        print(content)
        #print(type(dic3[i]))
        f = open(f"{img_path}name.txt", 'a')
        content = content+'\n'
        f.write(content)

这个方法是用我以前用的动态网页爬取的爬的。还在尝试用selenium爬取(没有成功)!

这是没有加params你会发现,找不到我们想要找的。这个是个动态网页的抓取。

然后加上上面代码中的params,就可以进入了。

复制代码
1.dic = json.loads(response)

这个就是把json形式转为字典,json的形式就是,代大括号像字典的。

复制代码
dic2 = dic['data']
dic3 = dic2['records']

这个就是找找找!!!

复制代码
3.for i in range(0,len(dic3),1):
    content = dic3[i]['name']
    print(content)
    #print(type(dic3[i]))
    f = open(f"{img_path}name.txt", 'a')
    content = content+'\n'
    f.write(content)

结束!!!,还想尝试selenium但是没成功!


下来进入重点!!!

先说自动化,这个就是基本形式

python 复制代码
from selenium import webdriver
from selenium.webdriver.common.by import By

# 创建 WebDriver 对象
wd = webdriver.Chrome()

# 调用WebDriver 对象的get方法 可以让浏览器打开指定网址
wd.get('https://www.byhy.net/_files/stock1.html')

# 根据id选择元素,返回的就是该元素对应的WebElement对象
element = wd.find_element(By.ID, 'kw')

# 通过该 WebElement对象,就可以对页面元素进行操作了
# 比如输入字符串到 这个 输入框里
element.send_keys('通讯\n')

1.web自动化:选择元素:

element = wd.find_element(By.ID, 'kw')

这个就是选择ID为kw的内容。ID这里可以变为CLASS_NAME

elements = wd.find_elements(By.TAG_NAME, 'div')

这个是找标签!

2.wd.click()这个是点击!wd.quit()这个关闭网页!!

3.为防止我们平时爬取太慢而没有爬到------wd.implicitly_wait(10)

这个就是没有爬到等待,最多等到10s

4.这个也是获取class的内容

element.get_attribute('class')

获取HTML

element.get_attribute('innerHTML')

获取输入框内容

element.get_attribute('value')


下面是css表达式:这个就比较高效了

如果我们要选择的 元素 没有id、class 属性,或者有些我们不想选择的元素 也有相同的 id、class属性值,怎么办呢?

这时候我们通常可以通过 CSS selector 语法选择元素。


css格式 :------class------'.'

------id------'#'

------标签------"什么都不要"

------href------"href="网址""


这个是搜索格式:

find_element(By.CSS_SELECTOR, CSS Selector参数)


<div class="misc" ctype="gun">沙漠之鹰</div>

CSS 选择器 可以指定 选择的元素要 同时具有多个属性的限制,像这样

div[class=misc][ctype=gun]


子和后代元素的选择 :

子元素 '>'

后代元素'空格'


div.footer1 > span.copyright

这个的意思是 div标签的class类中的叫footer1的子元素span标签的class类的叫copyright

.footer1 .copyright

这个意思是class类叫footer1的后代叫copyright的

.plant , .animal

这个意思是class类叫plant和叫animal的选择

这个是格式:

elements = wd.find_elements(By.CSS_SELECTOR, '.plant , .animal')


节点:

我们可以指定选择的元素 是父元素的第几个子节点

使用 nth-child

span:nth-child(2)

这个意思是父元素的第二个子元素,类型为span

p:nth-last-child(1)

这个意思是 倒数

nth-of-type

这个意思是只看这个所选的类型

span:nth-of-type(1)

这个意思是第一个span类型的子元素

nth-last-of-type

这个是 倒数

nth-child(even)------偶数节点,nth-child(odd)------奇数节点

如果要选择的是父元素的 某类型偶数节点,使用 nth-of-type(even)

如果要选择的是父元素的 某类型奇数节点,使用 nth-of-type(odd)

h3 + span

标签为h3后面紧跟的span

h3 ~ span

标签为h3后面的所有span节点


css注意"空格"不能乱加,这个是根据白月黑雨写的这个爆赞!!!

相关推荐
weixin199701080168 小时前
官方授权通道和灰色爬虫,做数据服务该选哪条路(附 python 源码)
c++·爬虫·python
砚凝霜9 小时前
保姆级 | CTF Lemon:禁用右键/F12 怎么破?查看源码 + HTML 注释拿 flag
前端·html
普通人69 小时前
Web端3D模型加载实战指南_Vue3_uni-app_HTML
前端·javascript·uni-app·html
志尊宝9 小时前
AI原生前端开发(043):AI辅助的样式生成(Tailwind CSS)
前端·css·ai-native
java1234_小锋1 天前
【技术专题】CSS3 网页技术 - CSS3 布局进阶
前端·css·css3
Frag0ut1 天前
Notepad++ 零基础入门:从记事本到代码编辑器的平滑过渡(2026最新版)
python·编辑器·html·json·notepad++·markdown·记事本
用户298698530141 天前
Python 实现 HTML 转纯文本:两种场景下的文档模型方案
python·html·api
java1234_小锋1 天前
【技术专题】CSS3 网页技术 - CSS3 视觉增强
前端·css·css3
晓得迷路了1 天前
栗子前端技术周刊第 152 期 - Rspack 2.3、TypeScript 7.1 Beta、Bun 1.4.4...
前端·javascript·css
普通人61 天前
CSS-box-sizing-使用指南
开发语言·前端·css·1024程序员节