selenium设置chrome和phantomjs的请求头信息

出于反爬虫也好-跳转到手机端页面也好都需要设置请求头,那么如何进行呢?

目录

  • 一:selenium设置phantomjs请求头:
  • 二:selenium设置chrome请求头:
  • 三:selenium设置chrome–cookie:
  • 四:selenium设置phantomjs-图片不加载:

 

一:selenium设置phantomjs请求头:

可以复制下列代码运行,会访问https://httpbin.org/get?show_env=1  该网站能呈现你请求的头信息

来源于知乎回答

# !/usr/bin/python
# -*- coding: utf-8 -*-

from selenium import webdriver
from selenium.webdriver.common.desired_capabilities import DesiredCapabilities

dcap = dict(DesiredCapabilities.PHANTOMJS)
dcap["phantomjs.page.settings.userAgent"] = (
"Mozilla/5.0 (Linux; Android 5.1.1; Nexus 6 Build/LYZ28E) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/48.0.2564.23 Mobile Safari/537.36"
)
driver = webdriver.PhantomJS(desired_capabilities=dcap)
driver.get("https://httpbin.org/get?show_env=1")
driver.get_screenshot_as_file('01.png')
driver.quit()

作者:JIM LIU
链接:https://www.zhihu.com/question/35547395/answer/106652782
来源:知乎
著作权归作者所有,转载请联系作者获得授权。

二:selenium设置chrome请求头:

来源http://www.cnblogs.com/TTyb/p/6128323.html 感恩原作者

如代码

# !/usr/bin/python
# -*- coding: utf-8 -*-

from selenium import webdriver
# 进入浏览器设置
options = webdriver.ChromeOptions()
# 设置中文
options.add_argument('lang=zh_CN.UTF-8')
# 更换头部
options.add_argument('user-agent="Mozilla/5.0 (iPod; U; CPU iPhone OS 2_1 like Mac OS X; ja-jp) AppleWebKit/525.18.1 (KHTML, like Gecko) Version/3.1.1 Mobile/5F137 Safari/525.20"')
browser = webdriver.Chrome(chrome_options=options)
url = "https://httpbin.org/get?show_env=1"
browser.get(url)
browser.quit()

三:selenium设置chrome–cookie:

cookie用于模拟登陆

# !/usr/bin/python
# -*- coding: utf-8 -*-

from selenium import webdriver
browser = webdriver.Chrome()

url = "https://www.baidu.com/"
browser.get(url)
# 通过js新打开一个窗口
newwindow='window.open("https://www.baidu.com");'
# 删除原来的cookie
browser.delete_all_cookies()
# 携带cookie打开
browser.add_cookie({'name':'ABC','value':'DEF'})
# 通过js新打开一个窗口
browser.execute_script(newwindow)
input("查看效果")
browser.quit()

四:selenium设置phantomjs-图片不加载:

from selenium import webdriver

options = webdriver.ChromeOptions()
prefs = {
    'profile.default_content_setting_values': {
        'images': 2
    }
}
options.add_experimental_option('prefs', prefs)
browser = webdriver.Chrome(chrome_options=options)

# browser = webdriver.Chrome()
url = "http://image.baidu.com/"
browser.get(url)
input("是否有图")
browser.quit()

效果如图:

996148-20161203114330787-1216998587

 

转载地址:
https://www.urlteam.org/2017/02/selenium%E8%AE%BE%E7%BD%AEchrome%E5%92%8Cphantomjs%E7%9A%84%E8%AF%B7%E6%B1%82%E5%A4%B4%E4%BF%A1%E6%81%AF/

  • 3
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
from selenium import webdriver from selenium.webdriver.chrome.options import Options from bs4 import BeautifulSoup import time # 目标网站的 URL url = 'http://example.com/rank/list' # Chrome 浏览器配置 chrome_options = Options() chrome_options.add_argument('--disable-extensions') chrome_options.add_argument('--disable-gpu') chrome_options.add_argument('--no-sandbox') chrome_options.add_argument('--headless') chrome_options.add_argument('--disable-dev-shm-usage') # 启动 Chrome 浏览器 browser = webdriver.Chrome(options=chrome_options) # 发起第一页的请求并解析 HTML 标签 browser.get(url) time.sleep(3) # 等待 3 秒钟,等待 AJAX 加载完成 soup = BeautifulSoup(browser.page_source, 'html.parser') total_pages = soup.select('.ant-pagination-item:not(.ant-pagination-next):not(.ant-pagination-prev)')[-1]['title'] current_page = soup.select_one('.ant-pagination-item-active').text rank_list = parse_page(soup) # 发起所有页码的请求,并将结果存入列表中 for page in range(2, int(total_pages) + 1): if str(page) != current_page: # 模拟在浏览器中翻页操作 browser.execute_script(f'window.antDesignPro.current.delete("/rank/list?page={int(current_page)}")') # 删除当前页的数据 browser.execute_script(f'window.antDesignPro.current.jump("/rank/list?page={page}")') # 跳转到需要打开的页码 time.sleep(3) # 等待 3 秒钟,等待 AJAX 加载完成 soup = BeautifulSoup(browser.page_source, 'html.parser') page_data = parse_page(soup) rank_list += page_data current_page = page # 将所有分页数据合并成一个完整的 DataFrame 对象 all_data = merge_data(rank_list) # 关闭浏览器窗口 browser.quit() # 打印输出结果 print(all_data),注意:目标网站采用了 AJAX 或者 JavaScript 技术来进行分页加载数据,因此翻页时并没有刷新整个页面,也无法从html文本获得第一页以后的排名帮我修改代码,要求用到request和beautifulsoup等库,
06-10
好的,以下是修改后的代码,使用了 requests 和 BeautifulSoup 库来发送请求和解析 HTML 标签: ```python import requests from bs4 import BeautifulSoup import pandas as pd import time def get_rank_list(url): # 发起第一页的请求并解析 HTML 标签 res = requests.get(url) soup = BeautifulSoup(res.text, 'html.parser') total_pages = soup.select('.ant-pagination-item:not(.ant-pagination-next):not(.ant-pagination-prev)')[-1]['title'] current_page = soup.select_one('.ant-pagination-item-active').text rank_list = parse_page(soup) # 发起所有页码的请求,并将结果存入列表中 for page in range(2, int(total_pages) + 1): if str(page) != current_page: # 模拟在浏览器中翻页操作 headers = { 'Referer': url, 'X-Requested-With': 'XMLHttpRequest' } res = requests.delete(url, headers=headers, params={'page': int(current_page)}) # 删除当前页的数据 res = requests.get(url, headers=headers, params={'page': page}) # 跳转到需要打开的页码 soup = BeautifulSoup(res.text, 'html.parser') page_data = parse_page(soup) rank_list += page_data current_page = page # 等待 3 秒钟,等待 AJAX 加载完成 time.sleep(3) # 将所有分页数据合并成一个完整的 DataFrame 对象 all_data = merge_data(rank_list) return all_data def parse_page(soup): rank_list = [] for tr in soup.select('tbody tr'): rank = tr.select_one('.rank').text.strip() # 排名 name = tr.select_one('.name').text.strip() # 名称 score = tr.select_one('.score').text.strip() # 得分 rank_list.append([rank, name, score]) return rank_list def merge_data(rank_list): df = pd.DataFrame(rank_list, columns=['rank', 'name', 'score']) return df if __name__ == '__main__': url = 'http://example.com/rank/list' all_data = get_rank_list(url) print(all_data) ``` 注意:目标网站采用了 AJAX 或者 JavaScript 技术来进行分页加载数据,因此需要在请求头中添加 `X-Requested-With` 和 `Referer` 参数,以模拟浏览器发送请求。此外,还需要等待 AJAX 加载完成后再解析 HTML 标签,可以使用 `time.sleep()` 函数来实现。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值