day03-数据接口和selenium基础

数据接口

import requests

res = requests.get(
    url='https://game.gtimg.cn/images/lol/act/img/js/hero/1.js?ts=2767550',
    headers={
        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/101.0.0.0 Safari/537.36'
    }
)
result = res.json()


def down_jpg(url: str, name: str):
    res = requests.get(
        url=url,
        headers={
            'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/101.0.0.0 Safari/537.36'
        }
    )
    contect = res.content
    with open(f'files/anni/{name}.jpg', 'wb') as f:
        f.write(contect)


if __name__ == '__main__':
    skin = result['skins']
    for i in skin:
        name_hero = i['name']
        url = i['mainImg']
        if not url:
            url = i['chromaImg']
        down_jpg(url, name_hero)
        print('下载完成')

# 补充:创建文件夹:
import os

os.mkdir('')

selenium基础用法

from selenium.webdriver import Chrome

# 1.创建浏览器对象(浏览器对象如果是全局变量,浏览器不会自动关机关闭)
b = Chrome()
# 2.打开网页(你需要爬的数据在那个网页里面,就打开那个网页)
b.get('https://movie.douban.com/top250')
b.maximize_window()
# 3.获取网页源代码(获取到的一定是页面中加载出来的)
print(b.page_source)

# 4.关闭浏览器
b.close()

selenium控制浏览器的基本行为

from time import sleep

from selenium.webdriver import Chrome

b = Chrome()
b.get('https://www.jd.com')
b.maximize_window()
# 1.输入框输入内容
# 1)找到输入框
input_tag = b.find_element_by_id('key')
# 2)输入框输入内容
input_tag.send_keys('电脑\n')

sleep(3)
# 2.点击按钮
button_tag = b.find_element_by_css_selector('#navitems-group2 #nav-jdww>a')
button_tag.click()

input(':')
b.close()

切换选项卡

from bs4 import BeautifulSoup
from selenium.webdriver import Chrome
from time import sleep

# 1.基本操作
b = Chrome()  # 创建浏览器
b.get('https://www.cnki.net/')  # 打开中国知网
search_tag = b.find_element_by_id('txt_SearchText')  # 获取输入框
search_tag.send_keys('数据分析\n')  # 输入框输入‘数据分析’,然后按回车
sleep(1)  # 切换界面后做一个等待操作

# 获取需要点击所有的标签:如果拿到后需要点击或者输入,必须要通过浏览器获取标签
all_result = b.find_elements_by_css_selector('.result-table-list .name>a')
# 点击第一个结果
all_result[0].click()

# 2.切换选项卡
# 注意:selenium中,浏览器对象(b)默认指向一开始的选项卡,除非用代码切换,否则浏览器对象指向的选项卡不会变
# 1)获取当前浏览器上的所有的窗口(选项卡):浏览器对象.window_handles()
# 2)切换选项卡
b.switch_to.window(b.window_handles[-1])

# 3)解析内容
soup = BeautifulSoup(b.page_source, 'lxml')
result = soup.select_one('#ChDivSummary').text
print(result)
sleep(2)
b.close()  # 关闭当前指向的窗口(最后一个窗口),窗口关闭后,浏览器对象的指向不会改变

# 1.点击下一个搜索结果
b.switch_to.window(b.window_handles[0])
all_result[1].click()
b.switch_to.window(b.window_handles[-1])
soup = BeautifulSoup(b.page_source, 'lxml')
result = soup.select_one('#ChDivSummary').text
print(result)
sleep(2)
b.close()



input('结束 :')
b.close()

某某知网

import csv

from bs4 import BeautifulSoup
from selenium.webdriver import Chrome
from time import sleep


def down_data(b):
    soup = BeautifulSoup(b.page_source, 'lxml')
    try:
        result = soup.select_one('#ChDivSummary').text
    except AttributeError:
        result = '无'
    print(result)
    with open('files/中国知网.csv', 'a', encoding='utf-8', newline='') as f:
        a = csv.writer(f)
        a.writerow([f'{result}'])
    sleep(2)


def go_next(b):
    b.switch_to.window(b.window_handles[-1])
    down_data(b)
    b.close()
    b.switch_to.window(b.window_handles[0])


def get_all_data(b):
    b.maximize_window()
    all_result = b.find_elements_by_css_selector('.result-table-list .name>a')
    print(all_result)
    sleep(2)
    for i in range(len(all_result)):
        all_result[i].click()
        go_next(b)


if __name__ == '__main__':
    # 1.基本操作
    b = Chrome()  # 创建浏览器
    b.get('https://www.cnki.net/')  # 打开中国知网
    search_tag = b.find_element_by_id('txt_SearchText')  # 获取输入框
    search_tag.send_keys('数据分析\n')  # 输入框输入‘数据分析’,然后按回车
    sleep(3)  # 切换界面后做一个等待操作
    get_all_data(b)
    i = 0
    while i < 2:
        button_next = b.find_elements_by_css_selector('#gridTable>.pages>a')
        button_next[-1].click()
        sleep(3)
        get_all_data(b)
        i += 1
    input(':')
    b.close()
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值