我正在尝试使用Iron Webscraper来获取网站上的名称列表。元素本身只是一个<article>
元素,其中包含一个列表。没什么特别的。
但是,鉴于他们在其网站上拥有的代码示例,在我要从中进行抓取的网站上运行该代码示例之后,没有任何反应。
下面是扩展WebScraper类时必须实现的两个方法。在将Init()
传递给this.Request()
之前,我已经检查过public override void Init()
{
StringBuilder url = new StringBuilder(baseUrl);
if (originType != OriginType.None)
{
string language = originType.GetEnumDescription();
if (!language.Equals(null))
{
url.Append("/").Append(language);
if (genderType != GenderType.None)
{
string gender = genderType.GetEnumDescription();
if (!gender.Equals(null))
{
url.Append("/").Append(gender);
}
else
{
Console.WriteLine("Gender came back null in OriginItemCardScraper");
}
}
}
else
{
Console.WriteLine("Language came back null in OriginItemCardScraper");
}
}
baseType = url.ToString().After("com/");
this.LoggingLevel = LogLevel.All;
this.Request(url.ToString(), Parse);
}
产生了正确的URL:
public override void Parse(Response response)
{
foreach (var title_link in response.Css($@"<article class="" data-category=""{baseType}>"))
{
string strTitle = title_link.TextContentClean;
Scrape(new ScrapedData() { { "Title", strTitle } });
}
Console.WriteLine();
}
但是代码永远不会到达以下方法:
store.flush()
所以这使我相信我从未得到回应。
我在这里想念什么?
答案 0 :(得分:0)
看来原因是因为我没有使用StartAsync()
。我这样做后,事情就开始起作用了。不知道为什么Start()
不起作用。