赤峰市网站建设_网站建设公司_Sketch_seo优化
2026/1/21 7:26:15 网站建设 项目流程

1.调试模式介绍

鼠标右键,再出现的选项中找到检查进入调试模式,或者按键盘上的F12键进入调试模式。

  • elements:点击这个功能后出现的是当前页面的html文件,在你想实时修改的那个元素处双击,可以暂时修改,不过并没有同步到后台。
  • console:控制台,用来打印错误信息和你在后台写的console.log(“显示信息”)
  • source:资源管理功能,用于调试js文件,这里要说明的一点是,在右侧找不到你想调试的js文件时,可以在后台写"debugger"进入到这个js文件后可以在右侧单击打断点,想调哪里就哪里。
  • network:网络监控功能,用于查看相关的网络请求,详情请看图片(顺序:从左到右,从上到下)

2.Cookie

2.1 cookie的用处

当客户端和服务器通过三次握手四次挥手建立起稳定连接之后,这个时候它们之间进行数据交互还会携带一个cookie参数。这个参数包含着诸如账号,密码以及一些偏好设置,以便提供个性化的内容。比如登录状态

当然cookie也是有 有效期的,超过有效期cookie将会清除作废,所以在编写一个cookie爬虫代码的时候,并不是一次编写永久运行。每隔一个时间段就需要更新cookie。

2.2 cookie的应用

什么时候使用cookie呢?

  • 1.当模拟登陆不好编写时(结构复杂,有加密)。
  • 2.只有cookie没有账号密码。
  • 3.网站根据cookie对用户进行推荐,专门爬取某人的个人推荐时。

在代码中利用cookie?

  • 1.将cookie写入headers中
  • 2.使用get方法中的cookie参数进行传递注意:参数必须为字典类型。

注意事项:

  • 1.自定义headers中的cookie,后面没有s(非cookies)
  • 2.get方法中的cookies参数cookies后面有s
  • 3.cookie一定是键值对存在的
2.3 会话保持:

1.为什么要进行会话保持?

再requests.post请求中,去登陆一个网站,会携带用户名和密码等信息。得到的response响应中,得到了cookie。但是这个时候如果我们成功登陆进去了网页,想要打开网页的其他部分,会发现访问失败了。因为每一个requests请求,都是新打开了一个浏览器去进行访问的,那我们不可能去做到每一次请求都要去登陆一下怎么办,就需要用到保持会话的功能了,我们可以只登陆一次,然后保持这种状态去做其他的或者更多的请求。

2. requests.session() 会话保持!

就是比如你使用session成功登陆了某个网站,则在再次使用该session对象请求该网站的其他网页都会默认使用该session之前使用的cookie等参数。

3.在什么时候进行使用?

1.需要爬虫保持登陆状态。

2.爬虫需要携带一些特定的参数。比如购物网站的无登陆状态下的推荐,主要是cookie。

2.4 模拟登陆——使用requests
importrequests url="https://user.17k.com/ck/author2/shelf?page=1&appKey=2406394919"headers={'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/116.0.0.0 Safari/537.36','cookie':'GUID=b0736049-8430-4431-a595-72ab05edff97; sajssdk_2015_cross_new_user=1; accessToken=avatarUrl%3Dhttps%253A%252F%252Fcdn.static.17k.com%252Fuser%252Favatar%252F19%252F99%252F48%252F101634899.jpg-88x88%253Fv%253D1694655893041%26id%3D101634899%26nickname%3D%25E4%25B9%25A6%25E5%258F%258Bm02wbCAJ9%26e%3D1710207893%26s%3D1b2483aa35875b52; c_channel=0; c_csc=web; BAIDU_SSP_lcr=https://www.baidu.com/link?url=142bYTSftlRt0IgfOXUlt0lcDN2mTEvB0UJUhud8zMu&wd=&eqid=8e7f3fe4000046e80000000265026678; sensorsdata2015jssdkcross=%7B%22distinct_id%22%3A%22101634899%22%2C%22%24device_id%22%3A%2218a9156b62f41f-0cf24e614e624-26031f51-921600-18a9156b630f19%22%2C%22props%22%3A%7B%22%24latest_traffic_source_type%22%3A%22%E8%87%AA%E7%84%B6%E6%90%9C%E7%B4%A2%E6%B5%81%E9%87%8F%22%2C%22%24latest_referrer%22%3A%22https%3A%2F%2Fwww.baidu.com%2Flink%22%2C%22%24latest_referrer_host%22%3A%22www.baidu.com%22%2C%22%24latest_search_keyword%22%3A%22%E6%9C%AA%E5%8F%96%E5%88%B0%E5%80%BC%22%7D%2C%22first_id%22%3A%22b0736049-8430-4431-a595-72ab05edff97%22%7D; Hm_lvt_9793f42b498361373512340937deb2a0=1694655494,1694656127; Hm_lpvt_9793f42b498361373512340937deb2a0=1694656144'}response=requests.get(url,headers=headers)print(response.text)

利用cookies模拟登陆——获取响应cookies

importrequestsfromrequests.utilsimportdict_from_cookiejar#请求信息headers={'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/116.0.0.0 Safari/537.36'}#登陆网址login_url="https://passport.17k.com/ck/user/login"#书架网址books_url="https://user.17k.com/ck/author2/shelf?page=1&appKey=2406394919"form_data={"loginName":"17590967558","password":"@z310425"}login_response=requests.post(login_url,headers=headers,data=form_data)print(login_response.status_code)print(login_response.cookies)#将cookies转换成字典格式cookies=dict_from_cookiejar(login_response.cookies)print(cookies)#获取书架信息books_response=requests.get(books_url,headers=headers,cookies=cookies)print(books_response.text)
2.5模拟登陆——使用session
importrequestsfromrequests.utilsimportdict_from_cookiejar#请求信息headers={'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/116.0.0.0 Safari/537.36',}#登陆网址login_url="https://passport.17k.com/ck/user/login"#书架网址books_url="https://user.17k.com/ck/author2/shelf?page=1&appKey=2406394919"form_data={"loginName":"17590967558","password":"@z310425"}#创建一个session会话session=requests.session()login_response=session.post(login_url,headers=headers,data=form_data)print(login_response.status_code)print(login_response.cookies)#获取书架信息books_response=session.get(books_url,headers=headers)print(books_response.text)

3.代理,禁止重定向等

3.1 代理
  • 1.透明代理

    代理服务器将客户端的信息转发至目标访问对象,并没有完全隐藏客户端真实的身份。即服务器知道客户端使用了代理IP,并且知道客户端的真实IP地址。

  • 2.普通匿名代理

    代理服务器用自己的IP代替了客户端的真实IP,但是告诉了目标访问对象这是代理访问。

  • 3.高匿代理

    代理服务器良好地伪装客户端,不但用一个随机的IP代替了客户端的IP,也隐藏了代理信息,服务器不会察觉到客户端是通过代理现实访问的,即用户仿佛就是直接使用代理服务器作为自己的客户端。

    所以使用高匿代理就可以隐藏自己的真实IP了。

3.2 禁止重定向

通过添加allow_redirects=False属性来禁止重定向。

3.3 超时处理
importrequests url='https://google.com'headers={"User-Agent":"Mozilla/5.0 (Linux; Android 6.0; Nexus 5 Build/MRA58N) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/116.0.0.0 Mobile Safari/537.36"}try:# response = requests.get(url, headers=headers, timeout=3)response=requests.get(url,headers=headers,timeout=(3,7))exceptrequests.exceptions.ConnectTimeoutase:print("链接超时",e)try:response=requests.get(url,headers=headers,timeOut(3,7))exceptrequests.exceptions.ConnectTimeoutase:print("连接超时",e)
3.4 retrying模块

retrying是一个功能强大的Python模块,用于在出现错误或特定条件未满足时自动重试一个函数。它可以灵活地配置重试的次数、间隔时间和重试条件,使我们能够更好地处理各种异常情况。

除了最大重试次数之外,retrying模块还允许我们配置其他重试条件。以下是一些常用的重试条件和配置选项:

stop_max_attempt_number:停止重试的最大次数。
wait_fixed:每次重试之间的固定等待时间。
wait_random_minwait_random_max:每次重试之间的随机等待时间范围。

wait_exponential_multiplier和wait_exponential_max:指数退避算法中的参数,用于计算每次重试之间的等待时间。
fromretryingimportretryimporttime count=0# @retry # 出现异常一直尝试# @retry(stop_max_attempt_number=3) # 设置最大尝试次数# @retry(stop_max_delay=3000) # 设置最大尝时间 单位ms# @retry(wait_fixed=2000) # 设置失败重试间隔时间@retry(wait_random_min=1000,wait_random_max=5000)# 设置失败重试随机时间defdemo():globalcount count+=1print(f"第{count}次尝试")# time.sleep(0.5)print(time.time())raiseException("请求错误")demo()


@retry(wait_random_min=1000, wait_random_max=5000) # 设置失败重试随机时间
def demo():
global count
count += 1
print(f"第{count}次尝试")
# time.sleep(0.5)
print(time.time())
raise Exception(“请求错误”)

demo()

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询