1. 程式人生 > >python爬取豆瓣小組700+話題加回復啦啦啦python open file with a variable name

python爬取豆瓣小組700+話題加回復啦啦啦python open file with a variable name

技術分享 ash 寫入 blog ima ron tar 回復 -128

需求:爬取豆瓣小組所有話題(話題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