爬蟲模塊(從網頁上採集數據 數據放置在網頁標籤裏面)
1.requests2.BeautifuSoup3.urllib4.urllib25.scrapy6.lxml
爬取步驟
1.獲取標籤的內容
數據 :<div> <title> <a> ....
找到標籤裏面的內容 soup.divhtml
2.打開網頁獲取文件的內容
soup.prettify() //打印本地文件的內容python
3.html源代碼相同標籤不少,怎麼獲取到我想要的那一部份內容
網頁名字 class id find:查找標籤
e = soup.find("div",class_="a").txt class是關鍵詞 因此要放置下劃線瀏覽器
區分點:
find() find_all() 都是查找標籤裏面的內容 python 3.x print後面要加括號
在python3中,urllib2合併到urllib庫中scrapy
字符串格式化的做用(爲真實的值保留一個位置)ide
from bs4 import BeautifulSoup #從網頁抓取數據
import urllib3,urllib.request
x = 0;
urls = ['https://www.buxiuse.com/?page={}'.format(str(i)) for i in range(5,11)]
for url in urls:
def crawl(url): # 模擬瀏覽器 加上headers
headers = {
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.100 Safari/537.36"}
req = urllib.request.Request(url, headers=headers) # 用地址建立一個request對象
page = urllib.request.urlopen(req, timeout=20) # 打開網頁
contents = page.read() # 獲取源碼
soup = BeautifulSoup(contents, features="lxml")
my_girl = soup.find_all('img')
for girl in my_girl:
link = girl['src']
global x
urllib.request.urlretrieve(link, "image\%s.jpg" % x) # 下載
print("爬取完第" + str(x) + "張")
x += 1
crawl(url)url