你甚至可以print content看一下 和那个网站下firebugs分析的数据一样
可以看到网页的东西都给抓出来了,真的和firebugs看到的一样,当然,这些个玩意儿,不管是firebugs看到的还是beautifulsoup分析的都是在我们缓存里面的,而不是网上的东西,所以bs(beautifulsoup)里面可以直接修改标签(尤其是更改图片的路径啊)
现在,BS登场。首先是漂亮一点儿的显示,下面这个图里这两行就不用解释了,名字就很明显。
ok,所有BS的详细介绍可以查阅中文文档:
我就解释自己的代码好了。
首先 18 table = soup.table 取出这张表里面的标签,因为分析了一下下,杭电里面我需要的信息都在标签里面,然后再从table里面找。
然后处理图片,为什马要先处理图片那,因为:1、图片需要保存,因此需要原来图片真正的url地址 ;2、保存下来的网页里面图片的src要改成本地的地址。也就是说如果原src = “/data/images/神马神马”,我需要把他改成“/images/hdoj/神马神马”,然后在存到里面,所以先处理保存图片原地址,然后用BS把缓存中的改成想要的东西,再进行后面的操作(这就是说为什马BS是在缓存操作,而不是在网上,网上的东西我们是改不了的)。
图片的相关代码:
1 #images the real url
2 images_src = table.findAll('img')[1:]
3 images = []
4
5 len_img = len(images_src)
6
7 for i in range(len_img):
8 image = str(images_src[i].attrs[0][1])
9 images.append(image)
10
11 # now we change the images url
12
13 for i in range(len_img):
14 images_src[i]['src'] = pro_image + images_src[i].attrs[0][1].split('/')[-1]
2 images_src = table.findAll('img')[1:],取出所有的图片标签,可以type()一下,是,而image_src【i】的type是这个
3 images = [] 这是最后需要保存到info里面杭电图片真正的url的,(下载图片需要)。
8image = str(images_src[i].attrs[0][1]) 这一行比较绕,为神马呢,我在BS文档里面发现了BeautifulSoup.Tag这个里面有个attrs属性,打印出来看了看是这个玩意儿[(u'src', u'http://.cnblogs.com/../data/images/1828-1.jpg')],一个list里面有个元组,而元组里面第二个元素刚好是图片的url,so:attrs[0]是这个(u'src', u'http://.cnblogs.com/../data/images/1828-1.jpg')(一个元组),attrs[0][1]就是图片的url了。
14 images_src[i]['src'] = pro_image + images_src[i].attrs[0][1].split('/')[-1] 更改缓存里面的url,pro_image='/images/hdoj/',这样保存下来的图片就和我本地图片路径一样了,方便后来django显示。
本文来自电脑杂谈,转载请注明本文网址:
https://www.pc-fly.com/a/jisuanjixue/article-33239-4.html
斯文是解决不了问题的
一缕温暖
真是幼稚
够早的啊