作业:1.4

2016-07-01  本文已影响0人  云清尧

<h2>代码</h2>
<pre>
from bs4 import BeautifulSoup
import requests

headers = {
'user-agent':'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.102 Safari/537.36'
}

def download(url):
r = requests.get(url,headers = headers)
if r.status_code != 200:
return

filename = url.split("?")[0].split("/")[-2]

target = "./{}.jpg".format(filename)

with open (target,"wb") as fs:
    fs.write(r.content)

print("%s => %s" % (url, target))

def main():
#获取1到10页的图片:
for page in range(1,10):
url = 'http://weheartit.com/inspirations/taylorswift?scrolling=true&page={}.'.format(page)
r = requests.get(url, headers=headers)

    #检查是否访问正常,正常状态码是200,异常则跳过
    if r.status_code != 200:
        continue

    #解析网页得到地址并下载
    soup = BeautifulSoup(r.text, 'html.parser')
    imgs = soup.find_all('img',class_='entry-thumbnail')
    for img in imgs:
        src = img.get('src')
        download(src)

if name == "main":
main()

只有直接运行脚本才会执行main函数

</pre>

<h2>成果</h2>

Paste_Image.png Paste_Image.png

<h2>总结</h2>
编写前的思考:
1.找到异步加载数据作为启示页
2.请求解析
3.定位元素,这里我想做道附加题,爬取图片链接后的大图
4.筛选信息
5.爬取多页
编写时发现没有办法请求到相关数据。看了答案后才发现自己的思路与答案有很大的偏差。首先是代理问题。我的电脑上装哟全局VPN,所有没有填写代理。其次是浏览器的伪装,可能之前就是因为没有伪装所以爬取不到数据。这次的作业主要是参考答案完成的。对于 download函数的编写还不是很明白,主要是其中的split等方法的具体规则还不清楚。
在编写的过程中,答案所给的网址是“beach”而作业要求的网址是“Taylor Swift”,其次答案中的地址也改变了。
<h2>反思</h2>
download函数的左右一是下载图片,二是将下载的图片名称打印出来。

上一篇下一篇

猜你喜欢

热点阅读