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