def get_html(): htmlist='' for num in range(0,3): url="https://db.idrblab.net/ttd/search/ttd/target?search_api_fulltext=alzheimer&page="+str(num) html=get_page(url) time.sleep(1) htmlist+=html return htmlist
时间: 2024-04-01 11:32:08 浏览: 172
这段代码的作用是获取一个网站上多页的HTML内容,并将这些HTML内容拼接成一个字符串。具体实现过程是,循环3次,每次构造一个新的URL,调用get_page函数获取该URL对应的HTML内容,并将内容拼接到htmlist字符串变量中。最终,返回拼接后的htmlist字符串。在循环内部使用time.sleep(1)语句是为了防止频繁请求该网站被封IP。
相关问题
解析下列代码的含义:def create_task_url(): lists = ['https://www.dingdian.info/sort/{}/1000000/'.format(types) for types in range(1, 9)] for url in lists: type_num = url.split('/')[-3] source = requests.get(url).text op = etree.HTML(source).xpath('//option/text()')[-1] demo = re.compile('\d+') max_page = demo.findall(op)[0] for page in range(1, int(max_page) + 1): every_page_url = 'https://www.dingdian.info/sort/{}/{}/'.format(type_num, page) every_page_source = requests.get(every_page_url).text chapter_urls = etree.HTML(every_page_source).xpath('//*[@id="newscontent"]/div[1]/ul/li/span[2]/a/@href') for chapter_url in chapter_urls: mysql_db.insert_tasks( 'https://www.dingdian.info'+chapter_url)
这是一个函数,函数名为 create_task_url,没有参数。
函数的作用是爬取一个小说网站(https://www.dingdian.info/)中的所有小说章节,并将章节的 URL 存入到 MySQL 数据库中。
具体的流程如下:
1.首先创建一个列表 lists,其中每个元素都是一个小说分类的 URL(https://www.dingdian.info/sort/{分类号}/1000000/),其中分类号从1到8。
2.遍历 lists 列表中的每个 URL,解析出分类号 type_num,并使用 requests 库的 get 方法请求该 URL,将返回的文本内容存入 source 变量中。
3.使用 lxml 库的 etree 模块将 HTML 的文本内容解析成树形结构,并使用 xpath 方法获取网页中最后一个 option 标签的文本内容,并使用正则表达式提取出其中的数字,得到该分类下小说的总页数 max_page。
4.接下来遍历该分类下的每一页,解析出每一页的 URL(https://www.dingdian.info/sort/{分类号}/{页码}/),并使用 requests 库的 get 方法请求该 URL,将返回的文本内容存入 every_page_source 变量中。
5.使用 xpath 方法获取每一页中所有小说章节的 URL,存入 chapter_urls 变量中。
6.遍历 chapter_urls 列表中的每个章节 URL,将其存入 MySQL 数据库中,其中章节 URL 为 'https://www.dingdian.info'+chapter_url。
怎么用python将下面代码中的dw,db改为私有属性import numpy as npimport matplotlib.pyplot as pltfrom HelperClass.DataReader_1_0 import *file_name = "../../data/ch04.npz"class NeuralNet_0_1(object): def __init__(self, eta): self.eta = eta self.w = 0 self.b = 0 def __forward(self, x): z = x * self.w + self.b return z def __backward(self, x,y,z): dz = z - y db = dz dw = x * dz return dw, db def __update(self, dw, db): self.w = self.w - self.eta * dw self.b = self.b - self.eta * db def train(self, dataReader): for i in range(dataReader.num_train): # get x and y value for one sample x,y = dataReader.GetSingleTrainSample(i) # get z from x,y z = self.__forward(x) # calculate gradient of w and b dw, db = self.__backward(x, y, z) # update w,b self.__update(dw, db) # end for def inference(self, x): return self.__forward(x)# end classdef ShowResult(net, dataReader): X,Y = dataReader.GetWholeTrainSamples() # draw sample data plt.plot(X, Y, "b.") # draw predication data PX = np.linspace(0,1,10) PZ = net.inference(PX) plt.plot(PX, PZ, "r") plt.title("Air Conditioner Power") plt.xlabel("Number of Servers(K)") plt.ylabel("Power of Air Conditioner(KW)") plt.show()if __name__ == '__main__': # read data sdr = DataReader_1_0(file_name) sdr.ReadData() # create net eta = 0.1 net = NeuralNet_0_1(eta) net.train(sdr) # result print("w=%f,b=%f" %(net.w, net.b)) # predication result = net.inference(1.346) print("result=", result) ShowResult(net, sdr)
将dw和db改为私有属性可以在它们的变量名前加上两个下划线"__",即将dw改为__dw,将db改为__db。修改后的代码如下:
import numpy as np
import matplotlib.pyplot as plt
from HelperClass.DataReader_1_0 import *
file_name = "../../data/ch04.npz"
class NeuralNet_0_1(object):
def __init__(self, eta):
self.eta = eta
self.w = 0
self.b = 0
self.__dw = 0
self.__db = 0
def __forward(self, x):
z = x * self.w + self.b
return z
def __backward(self, x, y, z):
dz = z - y
self.__db = dz
self.__dw = x * dz
return self.__dw, self.__db
def __update(self):
self.w = self.w - self.eta * self.__dw
self.b = self.b - self.eta * self.__db
def train(self, dataReader):
for i in range(dataReader.num_train):
x, y = dataReader.GetBatchTrainSamples(1)
z = self.__forward(x)
dw, db = self.__backward(x, y, z)
self.__update()
阅读全文