python爬取豆瓣小組700+話題加回復啦啦啦python open file with a variable name
需求:爬取豆瓣小組所有話題(話題title,內容,作者,發布時間),及回復(最佳回復,普通回復,回復_回復,翻頁回復,0回復)
解決:1. 先爬取小組下,所有的主題鏈接,通過定位nextpage翻頁獲取總過700+條話題;
2. 訪問700+ 鏈接,在內頁+start=0中,獲取話題相關的四部分(話題title,內容,作者,發布時間),及最佳回復、回復;
3. 在2的基礎上,判斷是否有回復,如果有回復才進一步判斷是否有回復翻頁,回復翻頁通過nextpage 獲取start=100、start=200的頁;
4. 進入下一個爬取函數,將抓取的回復 續寫 到2 中的文件;
解決思路:
Before:一開始建立2個文件,article.txt 用來存儲所有話題相關的內容(700+話題、作者信息);
同時,建立以title命名的回復文件;
After: 統一建立以話題title命名的文章,先寫入文章相關內容,再續寫回復;這樣方便讀取;
遇到的坑:
1. 要獲取某個div下直接的text,div.span下的text,div.h下的text:
——有2個解決方法:
A. 通過xpath //text,意思是獲取div 下的所有text文件;
B. 通過css 拼接,逗號隔開即可:
2. 鞏固了不同函數之間通過meta傳遞參數的方法:
3. python open file with a variable name
f = open(‘%s.txt‘ % title_end,‘a‘)
a: 續寫
4.去掉 str 中的空格,換行等符號
# 去掉在x左右的空白,\t,\n和\r字符.
x1 = x.strip(‘ \t\n\r‘)
5 . strip 去掉數據中的\r,‘‘.join 將列表轉回字符串;
# 先將文章中的\r 都去掉,有些單獨的‘\r‘ 就變成了空的列表元素:‘‘,再用if 來判斷下就好了
artical_end = []
for x in article:
x1 = x.replace(‘\r‘,‘‘)
if x1 != ‘‘:
artical_end.append(x1)
# 將artical_end 列表 轉為字符串
ar =‘‘.join(artical_end)
python爬取豆瓣小組700+話題加回復啦啦啦python open file with a variable name