KU地址Python之爬虫小人生

进入网站后,酷游红色开启浏览器开发者模式(F12),QA9观察8点CC下一页按钮的HTML标签内容

  • 发现上一页按钮的a标签中有上一页的网址为「/bbs/MobileComm/index6520.html」

那我们就可以藉由撷取上一页a标签里的网址来GET上一页的网页下来了!!

r = requests.get("https://www.ptt.cc/bbs/joke/index.html")
汤 = BeautifulSoup(r.text,"html.parser")
u = soup.select("div.btn-group.btn-group-paging a")#上一页按钮的a标签
url = "https://www.ptt.cc"+ u[1]["href"] #组合出上一页的网址

因为我们需要撷取多页(ex:3页),所以需要重新撰写程式码,藉由回圈来重复GET网页

import requests
from bs4 import BeautifulSoup
url = "https://www.ptt.cc/bbs/joke/index.html"
for i in range(3): #往上爬3页
    r = requests.get(url)
    soup = BeautifulSoup(r.text,"html.parser")
    sel = soup.select("div.title a") #标题
    u = soup.select("div.btn-group.btn-group-paging a") #a标签
    print ("本页的URL为"+url)
    url = "https://www.ptt.cc"+ u[1]["href"] #上一页的网址

for s in sel: #印出网址跟标题
    print(s["href"],s.text)

遇到按钮

进入网站后会看到让使用者点选「是否已满18岁」按钮

此时可先开启浏览器开发者模式(F12),并点选至network(网路),观察点选「已满18岁」后,会送给伺服器之封包内容。

发现封包以POST发送,并且封包内容有cookie和参数

  1. 就表示说我们的程式码需要以POST的方式,并且要有送出cookie和特定的参数
  2. 如何储存自身的cookie?答案是可以藉由requests的一个参数来储存Session会将你送出的requests所收到的cookies全部储存起来并且在发送下一次请求时送出对应的参数。
requests.Session() 

而封包内的参数,则可以加在POST后面,由前述可得知参数为from和yes,并得知参数内容。

payload={ #須送之參數
    'from':'/bbs/Gossiping/index.html',
    'yes':'yes'
}
requests.post("https://www.ptt.cc/ask/over18",data=payload) #將參數寫至data

加上上一次写的程式码,成功爬到八卦版的网页

import requests
r = requests.Session()
payload ={
    "from":"/bbs/Gossiping/index.html",
    "yes":"yes"
}
r1 = r.post("https://www.ptt.cc/ask/over18?from=%2Fbbs%2FGossiping%2Findex.html",payload)
r2 = r.get("https://www.ptt.cc/bbs/Gossiping/index.html")
print(r2.text)

  • 8
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值