现在需要爬取智慧树(需要登陆)网站上的问题内容和学生的回答
用Python爬取出现了一系列的问题
首先是从网页中复制的cookie在粘贴到他处的时候cookie貌似被编译了(复制前是一串字符,复制后出现了括号,出现了该账号的昵称,以至于我没办法从代码里加入cookie)
其次存在一个问题就是无法进入for循环,个人觉得有可能是两个方面出了问题,一个方面是该网页大概需要动态爬取,另一个方面可能是cookie的原因以至于无法登录进去
import sqlite3
from bs4 import BeautifulSoup # 网页解析
import re # 正则表达式,进行文字匹配
import urllib.request, urllib.error # 指定URL,获取网页数据
import xlwt # 进行表格操作
def main():
baseurl = "https://qah5.zhihuishu.com/qa.html#/web/home/1000010562?role=2&recruitId=48192&VNK=575f239e"
datalist = getDate(baseurl)
# 爬取网页
def getDate(baseurl):
# 调用单个页面的内容
url = baseurl
html = askURL(url) # 执行一次拿到一页内容
# 2.解析数据
soup = BeautifulSoup(html, "html.parser")
for item in soup.find_all('div', class_="title"): # 在一定的范围内进行查找
# for item in soup.find_all('span',class_="title"):
item = str(item)
print(item)
# 得到指定一个URL的网页内容
def askURL(url):
head = {
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/92.0.4515.107 Safari/537.36 Edg/92.0.902.55"
}
# 换头,伪装
request = urllib.request.Request(url, headers=head)
html = ""
try:
response = urllib.request.urlopen(request)
html = response.read().decode("utf-8")
except urllib.error.URLError as e:
if hasattr(e, "code"):
print(e.code)
if hasattr(e, "reason"):
print(e.reason)
return html
if __name__ == "__main__":
main()
print("爬取完毕")