爬虫的坑

查看 120|回复 7
作者:milu1123   
各位看官大大,这个是想拿到52的所有帖子,
技术有限,代码乱七八糟的见谅
不知道怎么保存到文本,或者 最好保存数据库里面,
烦请各位看官帮忙优化一下谢谢
[Asm] 纯文本查看 复制代码import requests
from lxml import etree
head = {'Cookie': '',
        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.135 Safari/537.36'}
for i in range(100):
        for h in range(100):
                url = f'https://www.52pojie.cn/forum-{h}-{i}.html'
                res = requests.get(url)
                e = etree.HTML(res.text)
                name = e.xpath('//*[@id="threadlisttableid"]/tbody/tr/th/a/text()')
                names = e.xpath('//*[@id="threadlisttableid"]/tbody/tr/th/a/@href')
                for no,no1 in zip(name,names):
                        print(f'标题:{no} 链接:https://www.52pojie.cn/{no1}')

爬虫, 看官

futurebook   

首先吾爱破解上面发爬取吾爱破解的求助就很秀,管理没给你禁了属实大量。
其次,你自己写这个代码拉取到的数据太乱了,很多没用的数据都拿了,还有这两个循环产生的url很多都是没有的板块。
你要实现全站爬取的话,代码量这点可远远不够
再者存储的话,如果想存数据库个人去写对应脚本吧,数据库的选择跟配置都不一样的。
写一个爬取单个板块的代码,给你瞅瞅吧(用scrapy习惯了,css选择器,xpath太久没用了,你将就着看吧)
[Python] 纯文本查看 复制代码from urllib.parse import urljoin
from scrapy import Selector
import requests
session = requests.Session()
def save(item: dict):
    '''
    保存,要存数据库的话,改你自己的数据库脚本
    '''
    with open('吾爱文件.txt', mode='a+', encoding='utf-8') as f:
        f.write(item['name'] + item['url'])
def main(url):
    response = session.get(url)
    response = Selector(text=response.text, type='html')
    item = {}
    for li in response.css('.new .s'):
        item['name'] = li.css('a::text').get()
        item['url'] = urljoin(url, li.css('a::attr(href)').get())
        print(item)
        # save(item)  # 存储
if __name__ == '__main__':
    url = 'https://www.52pojie.cn/forum-2-1.html'  # 原创发布区
    main(url)
[i]
善良的果仁   

[Python] 纯文本查看 复制代码import requests
from lxml import etree
content = ""
head = {'Cookie': '',
        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.135 Safari/537.36'}
for i in range(100):
        for h in range(100):
                url = f'https://www.52pojie.cn/forum-{h}-{i}.html'
                res = requests.get(url)

                e = etree.HTML(res.text)
                name = e.xpath('//*[@id="threadlisttableid"]/tbody/tr/th/a/text()')
                names = e.xpath('//*[@id="threadlisttableid"]/tbody/tr/th/a/@href')

                for no,no1 in zip(name,names):
                        content += f'标题:{no} 链接:https://www.52pojie.cn/{no1}  \r\n'
                        print(f'标题:{no} 链接:https://www.52pojie.cn/{no1}')
f = open("/content.txt","w",encoding = "utf - 8")
f.write(content)
f.close()
善良的果仁   


善良的果仁 发表于 2023-5-4 10:28
[Python] 纯文本查看 复制代码import requests
from lxml import etree
content = ""
[/quote]
[mw_shl_code=python,true]import requests
import time
from lxml import etree
content = ""
head = {'Cookie': '',
        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.135 Safari/537.36'}
for i in range(100):
        for h in range(100):
               
                url = f'https://www.52pojie.cn/forum-{h}-{i}.html'
                res = requests.get(url)

                e = etree.HTML(res.text)
                name = e.xpath('//*[@id="threadlisttableid"]/tbody/tr/th/a/text()')
                names = e.xpath('//*[@id="threadlisttableid"]/tbody/tr/th/a/@href')

                for no,no1 in zip(name,names):
                        content += f'标题:{no} 链接:https://www.52pojie.cn/{no1}  \r\n'
                        print(f'标题:{no} 链接:https://www.52pojie.cn/{no1}')
                time.sleep(0.5)
f = open("/content.txt","w",encoding = "utf - 8")
f.write(content)
f.close()
#别用那么高的频率爬吾爱。最好别爬吾爱,会造成服务器拥堵,谢谢!
善良的果仁   


善良的果仁 发表于 2023-5-4 10:32
[mw_shl_code=python,true]import requests
import time
from lxml import etree

https://www.52pojie.cn/robots.txt
遵守吾爱爬虫协议
milu1123
OP
  


善良的果仁 发表于 2023-5-4 10:36
https://www.52pojie.cn/robots.txt
遵守吾爱爬虫协议

练习练习,逛一逛52,,要感谢管理大大没禁、、、
milu1123
OP
  


futurebook 发表于 2023-5-4 09:55
首先吾爱破解上面发爬取吾爱破解的求助就很秀,管理没给你禁了属实大量。
其次,你自己写这个代码拉取到的 ...

练习练习,逛一逛52,,要感谢管理大大没禁、、、
谢谢,,,,
coderxialuo   

优秀啊啊啊啊啊啊
您需要登录后才可以回帖 登录 | 立即注册

返回顶部