selenium模块

关于selenium模块:

该模块最初是一个自动化测试工具,但是由于可以自动操作浏览器的功能,可以应用到爬虫领域,并且可以做到避免了很多防爬措施.


 

模块下载:

pip3 install selenium

file-setting-项目文件-双击搜索 输入selenium 选择国内源

 

驱动下载:(必不可少)

建议直接存放在python解释器中的script文件夹内即可

下载网址:http://npm.taobao.org/mirrors/chromedriver/2.35/

 

 用什么浏览器就下载对应浏览器的类型,win64位兼容32位 

解压到使用python的文件夹内部的scripts即可

 

 安装完成

 

------------恢复内容开始------------

关于selenium模块:

该模块最初是一个自动化测试工具,但是由于可以自动操作浏览器的功能,可以应用到爬虫领域,并且可以做到避免了很多防爬措施.


 

模块下载:

pip3 install selenium

file-setting-项目文件-双击搜索 输入selenium 选择国内源

 

驱动下载:(必不可少)

建议直接存放在python解释器中的script文件夹内即可

下载网址:http://npm.taobao.org/mirrors/chromedriver/2.35/

 

 用什么浏览器就下载对应浏览器的类型,win64位兼容32位 

解压到使用python的文件夹内部的scripts即可

 

 安装完成


 

爬取城市数据https://www.aqistudy.cn/historydata/

需求 爬取热门城市及其他城市

 

 

 热门城市在div class=hot 中

hot_name=html.xpath('//div[@class="hot"]/div[2]/ul/li/a/text()')

其他城市在div class=all中

all_name=html.xpath('//div[@class="all"]/div[2]/ul/div[2]/li/a/text()')

import requests
from lxml import etree
headers={'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.61 Safari/537.36'}
res=requests.get('https://www.aqistudy.cn/historydata/',headers=headers) # 通过检查文本发现有防爬措施,添加请求头useragent
html=etree.HTML(res.text)
hot_name=html.xpath('//div[@class="hot"]/div[2]/ul/li/a/text()')
# print(li_list)
all_name=html.xpath('//div[@class="all"]/div[2]/ul/div[2]/li/a/text()')
full_name=hot_name+all_name
print(full_name)
"""
也可以写成
full_name=html.xpath('//div[@class="hot"]/div[2]/ul/li/a/text()|//div[@class="all"]/div[2]/ul/div[2]/li/a/text()')
"""

爬取猪八戒岗位

 

 每个项目都在class="new-service-wrap"中 只需逐一查找各个内容所在的标签即可

import requests
from lxml import etree
from openpyxl import Workbook
wb=Workbook()
wb1=wb.create_sheet('岗位表',0)
wb1.append(['公司名','位置','价格','成交量(近半年)','介绍'])

headers={'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.61 Safari/537.36'}
res=requests.get('https://shanghai.zbj.com/search/f/',params={'kw':'app'})
list=etree.HTML(res.text)
name_list=list.xpath('//div[@class="new-service-wrap"]/div')
for div in name_list:
    name=div.xpath('./div/div/a/div[1]/p/text()')
    if not name: # 针对广告位没有名字 添加if not 判断 continue 继续循环
        continue
    com_name=name[-1].strip() # 由于是另起一行所以需要去掉/n符号
    # print(com_name)
    loc=div.xpath('./div/div/a/div[1]/div/span/text()')[0]
    # print(loc)
    price=div.xpath('./div/div/a[2]/div[2]/div/span[1]/text()')[0]
    amout=div.xpath('./div/div/a[2]/div[2]/div/span[2]/text()')[0]
    src=div.xpath('./div/div/a[2]/div[2]/div[2]/p/text()')
    src1=('app'.join(src))
    wb1.append([com_name,loc,price,amout,src1])
wb.save('岗位表.xlsx')

爬取百度贴吧

思路: 1.观察网页规律,获取请求方式,为普通加载

2.搜索什么贴吧 后面网址都会有kw:xxx的请求头

3.朝初第一次网址发送请求,筛选出所有帖子的网址

4.通过观察每个帖子的网址规律发现 网址由baidu.tieba.com+各个href属性拼接而成

5.完成网址拼接,向拼接网址发送请求,进入每个帖子网站

6.筛选出每个帖子的网站的图片标签地址

7.循环这些图片标签地址并写入文件夹内

 

import requests 
import os
from lxml import etree
import time
choice=input('输入你想逛的贴吧')
if not os.path.exists('贴吧图片'):
    os.mkdir('贴吧图片')
params={'kw':choice}
headers={'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.61 Safari/537.36'}
res=requests.get('https://tieba.baidu.com/f',params=params) # 这里注意不要加user agent 否则会找不到内容
tree=etree.HTML(res.text)
src=tree.xpath('//a[@class="j_th_tit "]/@href') #由于每个贴子地址都是一样的 所以直接找a标签中的href属性
time.sleep(1)
# print(src)
base_src='https://tieba.baidu.com' #每个帖子的网址就是之前的https://tieba.baidu.com加上href属性内容即可
for link in src: # 循环获取link标签 即 href属性 在src这个所有列表中
    real_src=base_src+link # 完成每个帖子的拼接
    # print(real_src)
    time.sleep(1)
    res1=requests.get(real_src) #向拼接完毕的地址发送请求
    time.sleep(1)
    tree1=etree.HTML(res1.text)
    img=tree1.xpath('//img[@class="BDE_Image"]/@src') #获得地址的图片标签地址
    time.sleep(1)
    # print(img)
    for img_src in img: #对这些图片的标签地址进行for循环 
        res2=requests.get(img_src) #向图片地址发送get请求
        time.sleep(1)
        file_path=os.path.join('贴吧图片',img_src[-15:]) #做文件路径拼接
        with open(file_path,'wb') as f:
            f.write(res2.content)# 以二进制模式写入文件

 

posted @ 2021-09-28 21:13  查无此人cxc  阅读(67)  评论(0编辑  收藏  举报