urllib3+request+bs4+pandas+获取图书信息,入门笔记

出现warning需要ssl验证解决方法
写入文件时出错解决方法
json中dump和loads的区别

urllib3

import urllib3
urllib3.disable_warnings()
http=urllib3.PoolManager()#创建实例
rq=http.request('GET',url='https://edu.tipdm.org/')

print(rq.data)#响应实体

结果为

状态码

print(rq.status)#状态码

timeout参数的多种设置方法

# timeout参数
import urllib3
http=urllib3.PoolManager()
rq=http.request('GET',url='https://edu.tipdm.org/',timeout=3.0)
import urllib3
http=urllib3.PoolManager()
rq=http.request('GET',url='https://edu.tipdm.org/',
               timeout=urllib3.Timeout(connect=1.0,read=2.0))
#也可分别设置连接和读取的timeout
import urllib3
http=urllib3.PoolManager(timeout==4.0)
rq=http.request('GET',url='https://edu.tipdm.org/')
#设置通用的timeout

retries参数

#reties参数:请求重试
import urllib3
http=urllib3.PoolManager(retries=False)
rq=http.request('GET',url='https://edu.tipdm.org/')
``

```python
import urllib3
http=urllib3.PoolManager()
rq=http.request('GET',url='https://edu.tipdm.org/',retries=False)
import urllib3
http=urllib3.PoolManager()
rq=http.request('GET',url='https://edu.tipdm.org/',retries=10)

重定向redirect参数

import urllib3
http=urllib3.PoolManager()
http=urllib3.PoolManager()
tm=urllib.Timeout(connect=1.0,read=3.0)
rq=http.request('GET',url='https://edu.tipdm.org/'',timeout=tm,rerties=3,redirect=5)
#重定向

数据存储

#ensure_ascii参数,将中文正常输出
import requests
from bs4 import BeautifulSoup
req=requests.get('http://www.hubu.edu.cn/')
soup=BeautifulSoup(req.content,'lxml')
dat=soup.select('body > div.sy-content > div > div > div:nth-child(2) > div.tzgg > div.xsdt-list > ul > li:nth-child(2) > a')

name=[i.text for i in dat]
href=[i['class'] for i in dat]
print(name,href)

输出结果:
[’\xa0\xa0【学教在线】资源环境学院:“云上思政”焕发新活力’] [[‘f_14’]]

import json
with open('./testjson','w',encoding='utf-8')as f:
    json.dump({'href':href,'name':name},f,ensure_ascii=False)

import os
os.getcwd()

import pandas as pd
pd.DataFrame({'href':href,'name':name})

输出结果
‘C:\Users\Admin\Untitled Folder’

在这里插入图片描述

存入mysql

from sqlachemy import create_engine#建立一个数据库连接
#格式:数据库产品名称+连接工具://用户名:密码@数据库ip地址:数据库端口号、数据库名称?charset=数据库数据编码
con=create_engine()

#略

selenium获取图书信息

from selenium import webdriver
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.common.by import By

driver=webdriver.Chrome()
driver.get('http://www.ptpress.com.cn/shopping/index')

wait=WebDriverWait(driver,10)

before=driver.current_window_handle

seach_bot=driver.find_element_by_css_selector("body > div.classifySearch-p > div > div.classifySearchBar > div.allSearch > input")#找到查询框

seach_bot.send_keys("数据可视化")

confirm_bot=wait.until(
    EC.element_to_be_clickable(By.CSS_SELECTOR,'body > div.classifySearch-p > div > div.classifySearchBar > div.allSearch > a > i'))
confirm_bot.click()

driver.page_source

结果如图:仍是首页的信息(也就是刚利用搜索框的页面)
在这里插入图片描述

driver.current_window_handle
before

输出结果都是:
‘CDwindow-8733EBC0C80804CE9B8C4253A3563A1A’

说明需要改变driver

driver.switch_to.window(driver.window_handles[1])
html=driver.page_source

此时已经得到想要的页面

from bs4 import BeautifulSoup

soup=BeautifulSoup(html,'lxml')
data=[i.text for i in soup.select('#search > div.book-floor > ul > li >p> a')]
data```
结果为:
['乐见数据 商业数据可视化思维',
 '¥55.84',
 'Power BI数据分析与数据可视化(微课版)',
 '¥33.60',
 'Python Qt GUI与数据可视化编程',
 '¥79.20',
 '大话数据分析2—Tableau数据可视化企业应用实战',
 '¥63.20',
 '大数据可视化技术',
 '¥31.84',
 '大话数据分析 Tableau数据可视化实战',
 '¥71.20',
 '商务数据可视化(全彩微课版)',
 '¥39.84',
 'D3 4.x数据可视化实战手册 第2版',
 '¥55.20',
 'Kibana数据可视化',
 '¥47.20',
 'Python数据可视化编程实战 第2版',
 '¥55.20',
 'JavaScript数据可视化编程',
 '¥79.20',
 '大数据可视化:重构智慧社会',
 '¥47.20',
 'Python数据可视化编程实战',
 '¥39.20',
 'D3.js数据可视化实战手册',
 '¥47.20',
 'R数据可视化手册',
 '¥71.20',
 '数据可视化实战:使用D3设计交互式图表',
 '¥47.20',
 '鲜活的数据:数据可视化指南',
 '¥55.20']


获取书名
```python
data[::2]

[‘乐见数据 商业数据可视化思维’,
‘Power BI数据分析与数据可视化(微课版)’,
‘Python Qt GUI与数据可视化编程’,
‘大话数据分析2—Tableau数据可视化企业应用实战’,
‘大数据可视化技术’,
‘大话数据分析 Tableau数据可视化实战’,
‘商务数据可视化(全彩微课版)’,
‘D3 4.x数据可视化实战手册 第2版’,
‘Kibana数据可视化’,
‘Python数据可视化编程实战 第2版’,
‘JavaScript数据可视化编程’,
‘大数据可视化:重构智慧社会’,
‘Python数据可视化编程实战’,
‘D3.js数据可视化实战手册’,
‘R数据可视化手册’,
‘数据可视化实战:使用D3设计交互式图表’,
‘鲜活的数据:数据可视化指南’]

import pandas as pd
pd.DataFrame({"价格":data[1::2],"书名":data[::2]})

在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值