今天是我完成的第一个爬虫,离我改变世界又进了了一步!!!
frombs4importBeautifulSoup
importre
info=[]
withopen('C:/Users/Administrator/Desktop/day1houework/Plan-for-combating-master/week1/1_2/1_2answer_of_homework/1_2_homework_required/index.html','r')aswb_data:
Soup=BeautifulSoup(wb_data,'lxml')
images=Soup.find_all(src=re.compile('pic_0'))
Commodity_name=Soup.select('body > div > div > div.col-md-9 > div > div > div > div.caption > h4 > a')
Commodity_price=Soup.find_all('h4',text=re.compile('$'))
Commodity_evaluate=Soup.select('body > div > div > div.col-md-9 > div > div > div > div.caption > p')
Commodity_rating=Soup.select('body > div > div > div.col-md-9 > div > div > div > div.ratings > p > span')
Commodity_score=Soup.find_all('p',text=re.compile('reviews'))
print(Commodity_rating)
defgetrate(values):
job3=values
count_list=0
job1=[]
job=[]
foriinjob3:
count_list=count_list+1
job.append(i)
ifcount_list==5:
job1.append(job)
count_list=0
job=[]
deljob3[:5]
returnjob1
rates=getrate(Commodity_rating)
forimage,name,price,evaluate,rate,scoreinzip(images,Commodity_name,Commodity_price,Commodity_evaluate,rates,Commodity_score):
data={
'image':image.get('src'),
'name':name.get_text(),
'price':price.get_text(),
'evaluate':evaluate.get_text(),
'rate':rate ,
'score':score.get_text()
}
info.append(data)
foriininfo:
print(i['name'],i['image'],i['price'],i['evaluate'],i['rate'],i['score'])
通过这个爬虫,让我了解到,我对序列和字典的知识还有很大差距,下一步要逐步加强
通过本次作业我学习到了序列的append(),extend(),在for循环下,无法将变量job3进行重新赋值等问题,find_all()的用法,get_text() ,等用法。再加油吧↖(^ω^)↗
for i in list_a for循环是先去找list_a的内存地址,然后开始循环,循环的话是在list_a的首地址的基础上加一个变量的内存,然后要再找下一个变量的时候再加一个变量的内存
而我们在for循环里给我们的lis_a赋值 如:list_a = list_b 就相当于 把list_b的内存地址给list_a
但是我们for 循环依然还是在原来list_a 的内存地址增加一个内存单元 来实现循环