postはシミュレーションに静的htmlページへのアクセスを要求し、結果をpython 3に保存する.7
7454 ワード
1つのtxtドキュメントの各行に1つの検索語が保存されています.1つのサイトに検索語を入力し、必要な結果を保存する必要があります.シミュレーションpostは問題を要求しhtml を保存する BeautifulSoupを介してhtmlに必要なclassまたはidを に検索 readline txtドキュメントの各行の検索語を読み出し、前の2ステップのコード を統合する.クエリーした結果を に保存します.
headersはfiddlerで取得できます
headersはfiddlerで取得できます
import urllib.request
import urllib.parse
from bs4 import BeautifulSoup
file = open(' .txt', 'w', encoding='utf-8')
with open('question.txt', 'r', encoding='utf-8') as question_file:
while True:
lines = question_file.readline()
if not lines:
break
url = 'http://127.0.0.1:8000/ '
headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36'
' (KHTML, like Gecko) Chrome/67.0.3396.99 Safari/537.36',
'Referer': 'http://47.93.34.71:2021/',
'Accept': 'text/html,application/xhtml+xml,application/xml;'
'q=0.9,image/webp,image/apng,*/*;q=0.8',
'Accept-Encoding': 'gzip, deflate',
'Accept-Language': 'zh-CN,zh;q=0.9'
}
postdata = {'desc_q_by_user': lines, 'csrfmiddlewaretoken': 'I3SeW9DO0l289Kvtc2wke1v4zwcr6Rxj'}
data = urllib.parse.urlencode(postdata).encode(encoding='utf-8')
request = urllib.request.Request(url, data=data, headers=headers)
response = urllib.request.urlopen(request)
soup_string = BeautifulSoup(response, 'html.parser')
question_related = soup_string.find(attrs={'class': 't1'})
file.write(lines+'
')
for question in question_related:
file.write(str.strip(question))
print(str.strip(question))
file.write('
')
file.close()