간단한 async/aiohttp 기반 파충류
3636 단어 파충류
import asyncio
import aiohttp
from lxml import etree
import queue
urlQ = queue.Queue()
f = open("title22.txt", "w",encoding='utf-8')
async def get_html(url):
ck = """Hm_lvt_dbc355aef238b6c32b43eacbbf161c3c=1507966069,1509850072,1509851337,1509851651; Hm_lpvt_dbc355aef238b6c32b43eacbbf161c3c=1509851653"""
headers = {
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3112.101 Safari/537.36",
"Referer": url,
"Cookie": ck,
"Host": "www.mzitu.com"
}
async with asyncio.Semaphore(5): # 5
async with aiohttp.ClientSession() as session:
async with session.get(url, headers=headers) as html:
# print(resp.status)
response = await html.text(encoding="utf-8")
# print(response)
return response
async def parse():
while True: # while true
if urlQ.empty():
break
url = urlQ.get()
html = await get_html(url)
selector = etree.HTML(html)
titles = selector.xpath("//div[@class='postlist']//li/a/img/@alt")
for title in titles:
f.write(title + '
')
asyncio.ensure_future(parse())
urls = ["http://www.mzitu.com/page/{}/".format(i) for i in range(1, 157)]
for url in urls:
urlQ.put(url)
loop = asyncio.get_event_loop()
tasks = [parse() for _ in range(50)] # , parse while true , 50 , 50 ,
loop.run_until_complete(asyncio.wait(tasks))
loop.close()
f.close()
몇 개의 협동 파충류와 관련된 링크를 첨부합니다. 이 안에 요청에 대한 봉인이 있습니다. ua, 쿠키 같은 비동기 파충류: async/await와aiohttp의 사용, 그리고 예시Python에서 비동기 협동의 사용 방법을 소개합니다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
python은 어떻게 파충류의 효율을 향상시킬 것인가단일 스레드 + 멀티태스킹 비동기 협동 협정 함수(특수 함수)를 정의할 때 async 수식을 사용합니다. 함수 호출 후 내부 문장은 즉시 실행되지 않고 협동 대상으로 되돌아옵니다. 퀘스트 대상 작업 대상 = 고급 협...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.