首页 > 编程语言 > 详细

python网络爬虫

时间:2018-12-01 11:51:12      阅读:225      评论:0      收藏:0      [点我收藏+]

第一部分:

请分析作业页面,爬取已提交作业信息,并生成已提交作业名单,保存为英文逗号分隔的csv文件。文件名为:hwlist.csv 。
 
文件内容范例如下形式:
 
学号,姓名,作业标题,作业提交时间,作业URL
20194010101,张三,羊车门作业,2018-11-13 23:47:36.8,http://www.cnblogs.com/sninius/p/12345678.html
20194010102,李四,羊车门,2018-11-14 9:38:27.03,http://www.cnblogs.com/sninius/p/87654321.html
 
*注1:如制作定期爬去作业爬虫,请注意爬取频次不易太过密集;
*注2:本部分作业用到部分库如下所示:
(1)requests —— 第3方库
(2)json    —— 内置库
 
我们需要爬取的网址为https://edu.cnblogs.com/campus/hbu/Python2018Fall/homework/2420,爬取信息为:学号,姓名,作业标题,作业提交时间,作业URL。
技术分享图片

 

通过浏览器检查原代码未发现提交信息,检查元素,在XHR发现所需要的信息。

技术分享图片

  找到包含所需信息的网址:https://edu.cnblogs.com/Homework/GetAnswers?homeworkId=2420&_=1543629375998,剩下就是代码的问题了。

https://edu.cnblogs.com/campus/hbu/Python2018Fall/homework/2420

https://edu.cnblogs.com/Homework/GetAnswers?homeworkId=2420&_=1543629375998

  不过 ,通过原网址和现网址对比,发现“2420”相同,遂猜想可通过网址最后编号获取“博客园”所有作业的提取,通过代码实践,“https://edu.cnblogs.com/Homework/GetAnswers?homeworkId=2420”便可提取信息。

 至此便完成此次网络爬虫的所有工作。但是,最近正在学习python的图形界面,遂设计了一个简单的爬取界面。

技术分享图片

输入博客园的作业连接,点击开始爬取,便可以将爬取信息显示在下方输出窗口。

技术分享图片

更有意思的便是只要改最后四个数字,便可以爬取其他的作业链接,上图便是小小的实验。

技术分享图片

最后爬了下网络爬虫作业的信息。

 
from PyQt5 import QtCore, QtGui, QtWidgets

class Ui_Form(object):
    def setupUi(self, Form):
        Form.setObjectName("Form")
        Form.resize(1083, 667)
        self.label = QtWidgets.QLabel(Form)
        self.label.setGeometry(QtCore.QRect(110, 50, 91, 41))
        font = QtGui.QFont()
        font.setPointSize(12)
        self.label.setFont(font)
        self.label.setObjectName("label")
        self.lineEdit = QtWidgets.QLineEdit(Form)
        self.lineEdit.setGeometry(QtCore.QRect(210, 60, 441, 31))
        self.lineEdit.setObjectName("lineEdit")
        self.pushButton = QtWidgets.QPushButton(Form)
        self.pushButton.setGeometry(QtCore.QRect(650, 60, 91, 31))
        font = QtGui.QFont()
        font.setPointSize(12)
        self.pushButton.setFont(font)
        self.pushButton.setObjectName("pushButton")
        self.textBrowser = QtWidgets.QTextBrowser(Form)
        self.textBrowser.setGeometry(QtCore.QRect(70, 110, 891, 501))
        self.textBrowser.setObjectName("textBrowser")

        self.retranslateUi(Form)
        QtCore.QMetaObject.connectSlotsByName(Form)

    def retranslateUi(self, Form):
        _translate = QtCore.QCoreApplication.translate
        Form.setWindowTitle(_translate("Form", "Form"))
        self.label.setText(_translate("Form", "博客园链接:"))
        self.pushButton.setText(_translate("Form", "开始爬取"))


from PyQt5 import QtWidgets
from login import Ui_Form
from PyQt5.QtWidgets import QFileDialog
import requests
import json

class mywindow(QtWidgets.QWidget, Ui_Form):

    def  __init__ (self):
        super(mywindow, self).__init__()
        self.setupUi(self)
        self.pushButton.clicked.connect(self.fun)

    def fun(self):
        u = self.lineEdit.text()

        u = u.split(/)[-1]
        url = "https://edu.cnblogs.com/Homework/GetAnswers?homeworkId={}".format(u)
        r = requests.get(url)
        r.encoding = r.apparent_encoding
        jd = json.loads(r.text)[data]
        p = ""
        for i in jd:
            p += str(i[StudentNo]) + , + str(i[RealName]) + , + str(i[DateAdded]).replace(T,  ).split(.)[0] + , + str(i[Title]) + , + str(i[Url] + \n)
        self.textBrowser.setText(p)
        f = open(D:\hwlist.csv, w)
        f.write(p)
        f.close()


if __name__=="__main__":
    import sys
    from PyQt5.QtGui import QIcon
    app=QtWidgets.QApplication(sys.argv)
    ui = mywindow()
    ui.show()
    sys.exit(app.exec_())

 

python网络爬虫

原文:https://www.cnblogs.com/mugongzi/p/10048528.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!