2021.3.31

一、代理使用

1、requests中设置代理

proxies = {‘http’:‘ip:端口号’,‘https’:‘ip:端口号’}

  • 获取代理

    def ips()
    	url = 代理地址
        result = requests.get(url).text
        if result[0] == '{':
            return None
        ips_list = result.slipt('\n')[:-1]
        return ips_list
    
  • 使用代理

    proxies = {'http':ips_list[0],'https':ips_list[0]}
    response = request.get(url,proxies = proxies )
    
2.selenium设置代理

设置对象.add_argument(’–proxy-server=http://代理ip:端口’)

  • 获取代理

    def ips()
    	url = 代理地址
        result = requests.get(url).text
        if result[0] == '{':
            return None
        ips_list = result.slipt('\n')[:-1]
        return ips_list
    
  • 使用代理

    # 创建设置对象
    option = webdriver.ChromeOptions()
    # 添加代理
    option.add_argument(f'--proxy-server=http://{ips_list[0]}')
    # 创建浏览对象
    b = webdriver.Chrome(options = option)
    

二、selenium控制页面滚动

1、JavaScript的滚动页面的代码
# 只滑动一次
window.scrollTo(x,y)  #  x表示横向滑动,y表示竖向滑动
#滑动多次
# 一点一点的滚动: 500 -> 修改成每次需要滚动的距离,单位是像素;  1000 -> 每次滚动的时间间隔,单位是毫秒
heghit = 500
t = setInterval(function(){
	if(heghit >= document.body.scrollheghit){
		clearInterval(t)
}
	window.scrollTo(0,heghit)
	heghit += 500
},1000)
# setInterval定时执行程序,clearInterval取消定时执行
2、在selenium中石像鬼页面滚动
# 滚动到底部
浏览对象.execute_scrip("window.scrollTo(0,ducument.body.scrollHeghit)") 
#缓慢滑动
浏览对象.execute_scrip("""
heghit = 500
t = setInterval(function(){
	if(heghit >= document.body.scrollheghit){
		clearInterval(t)
}
	window.scrollTo(0,heghit)
	heghit += 500
},1000)
""")

三、bs解析数据

Beautifulsoup是基于css选择器的解析库

1、准备数据(一般是通过requests或者selenium爬取到)
2、创建BeautifulSoup解析器对象

BeautifulSoup(解析对象,解析器类型)

解析对象:一般是html格式字符串

解析器类型:lxml(常用)、html、xml、html5lib

soup = BeautifulSoup(content,'lxml')
3、获取标签 - 通过css选择器

解析器对象.select(css选择器) - 在整个页面中找,返回的是列表,元素是标签

标签对象.select(css选择器) - 在标签中找,返回的是列表,元素是标签

result = soup.select('p')   # 标签名选择
print(result)

result = soup.select('#f1')
print(result)

ol = soup.select('#o1')[0]  # 标签对象
lis = soup.select('#o1>li')
4.嵌套写法

嵌套写法: 标签1.标签2.标签3… -> 获取标签1中第一个标签2中的第一个标签3…

5.按照指定属性值查找标签
result = soup.find_all(attrs={'tag': 'hot'})   ---返回的是列表
print(result)
6.获取内容和属性

标签.string - 获取双标签的文字内容(注意:被获取的标签中不能有子标签,否则结果是None) 返回字符串

标签.contents - 获取双标签的内容(包括文字内容和子标签) 返回列表元素是字符串和标签

标签.get_text() — 返回字符串,返回标签内容及其子标签的内容

b1 = soup.select('#f1')[0]
print(b1.string)    # 我是font1
b2 = soup.select('#f2')[0]
print('===:', b2.string)   # ===: None

print(b1.contents)   # ['我是font1']
print(b2.contents, b2.contents[-1].string)   # ['我是font2 ', <a href="#">abc</a>]  abc

print(b1.get_text())    # 我是font1
print(b2.get_text())    # 我是font2 abc
7.获取标签属性

标签对象.attrs[属性名]

b3 = soup.body.div.a
print(b3.attrs['href'])    # https://www.baidu.com
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值