import lxml,requests,sys
from bs4 import BeautifulSoup
from lxml import etree
reload(sys)
sys.setdefaultencoding("utf-8")
def main():
url = 'https://image.baidu.com/search/flip?tn=baiduimage&ie=utf-8&word=%E6%9A%B4%E8%B5%B0%E6%BC%AB%E7%94%BB&pn=0'
req = requests.get(url).content
# soup = BeautifulSoup(req.content,'lxml')
# imgs = soup.find_all('img')
content = etree.HTML(req)
paths = content.xpath('//*[@id="imgid"]/ul/li[1]/a/img/text()')
# for img in imgs:
#
# print img
# for img in imgs :
print paths
main()
天蓬老师2017-04-18 10:32:15
크롤러를 작성할 때 xpath를 사용하여 웹페이지의 소스 코드에 데이터가 있는지 확인합니다. 그렇지 않은 경우에는 비동기적으로 로드된다는 의미입니다
다음 이미지 목록을 찾을 수 없습니다. 이미지가 js에 의해 로드되었음을 확인할 수 있습니다
F12가 네트워크를 살펴봤고(새로고침해서 확인) 비동기 요청으로 로드한 이미지 정보를 찾지 못해 데이터가 html에 있어야 할 줄 알았는데, js에 배치되어 로드 시 처리되었습니다. 이미지
위 소스코드 보는 방법과 같은 방법으로 objURL 매개변수를 검색해서 실제 URL을 찾아보세요
으아악나머지는 여러분의 몫입니다~ 아래에서 실제 URL을 분석하는 방법을 찾아보세요!